반응형

gof의 디자인 패턴 49

[소프트웨어 설계 패턴 C#] 18. 반복자 패턴(Iterator Pattern)

18. 반복자 패턴(Iterator Pattern) 프로그램을 하다 보면 개체들을 보관하는 컬렉션 개체를 사용하는 것은 매우 흔한 일입니다. 그리고, 컬렉션의 안전성을 유지하기 위해서는 개체를 보관하는 공간을 직접적으로 노출시키지 않게 됩니다. 하지만 사용자의 경우 컬렉션에 보관된 개체들의 정보를 검색할 수 있어야 하며 경우에 따라서는 보관된 개체들에 대해 반복된 작업을 수행하기를 원하는 경우가 있습니다. 반복자 패턴은 컬렉션 개체의 내부 저장 공간에 대해 직접적으로 노출하는 것을 막으면서 보관된 개체들에 대해 반복된 작업을 수행할 수 있는 방법을 제공하고자 할 때 사용하는 패턴입니다. 반복자 패턴에서는 컬렉션을 반복 순회하면서 작업을 수행할 필요가 있을 때 순회할 수 있는 도구 개체를 정의합니다. 그리..

[소프트웨어 설계 패턴 C#] 17. 해석자 패턴 (Iterpreter Pattern)

17. 해석자 패턴(Interpreter Pattern) 해석자 패턴은 사용자가 표현하기 쉬운 표현을 사용하게 하고 이를 해석하는 개체를 통해 약속된 알고리즘을 수행할 수 있게 해 주는 패턴입니다. SQL 쿼리문이나 Command 창에서 프로그램 실행 시 필요한 인자를 전달할 때와 같은 경우 등에서 많이 사용될 수 있는 패턴입니다. 해석자 패턴에서는 사용자가 원하는 다양한 명령을 쉽게 표현할 수 있게 구문 약속을 해야 합니다. 그리고, 해석자에서는 이와 같이 약속된 구문을 입력 인자로 전달되었을 때 이를 해석을 할 수 있어야 합니다. 사용자로부터 전달된 입력 구문은 하나의 표현으로 종결되기도 하지만 여러 개의 표현으로 해석될 수도 있습니다.가령 "2 Add 3" 과 같은 표현은 피 연산자:2, 연산자:+..

[소프트웨어 설계 패턴 C#] 16. 명령 패턴 (Command Pattern)

16. 명령 패턴(Command Pattern) 프로그래밍을 하다 보면 명령을 내리는 개체와 명령을 수행하는 개체를 나누는 작업은 매 번 있는 작업입니다. 그런데, 실제 요청한 작업을 수행하는 개체에서 수행에 필요한 알고리즘을 모두 포함시켰을 경우에 비슷한 형태의 여러 메서드를 구현하여야 하는 경우가 발생합니다. 경우에 따라서는 명령을 내리는 시점과 실제 명령을 수행하는 시점이 다르고 다양한 설정에 따라 구체적인 수행 알고리즘이 다른 경우도 발생합니다. 이와 같은 경우에 명령을 내리는 곳에서 일부 알고리즘을 정의하여 명령을 수행하는 개체의 메서드를 호출할 때 입력 인자로 전달하는 것이 더 효과적인 경우가 발생합니다. 이와 같은 경우에 명령 패턴은 효과적으로 사용할 수 있습니다. 명령 패턴은 명령을 요청하..

[소프트웨어 설계 패턴 C#] 14. 프락시 패턴 (Proxy Pattern) - 보호용 프락시

14. 프락시 패턴(Proxy Pattern) - 보호용 프락시 이번에는 프락시 패턴 중에서 보호 프락시에 대해 살펴보기로 합시다. 보호 프락시는 사용자가 실제 개체의 특정 행위를 수행할 수 있는 권한이 있는지를 확인할 필요가 있을 경우에 사용이 됩니다. 2016/04/27 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 프락시 패턴(Proxy Pattern) 보호용 프락시 - 개요, 시나리오

[소프트웨어 설계 패턴 C#] 13. 프락시 패턴 (Proxy Pattern) - 가상 프락시

13. 프락시 패턴(Proxy Pattern) - 가상 프락시 이번에는 프락시 패턴 중에서 가상 프락시에 대해 살펴보기로 합시다. 가상 프락시는 실제 개체의 특정 행위를 수행하는 비용이 클 경우 사용이 됩니다. 사용자가 가상 프락시 개체를 통해 비용이 많이 드는 작업을 요청을 했을 시에 가상 프락시 개체는 이 작업을 별도의 쓰레드에서 수행하게 명령만 내립니다. 이를 통해 사용자는 비용이 큰 작업을 수행 요청했을 시에 수행이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있게 됩니다. 2016/04/27 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 프락시 패턴(Proxy Pattern) 가상 프락시 - 개요, 시나리오 2016/04/27 - [프로그래밍 기술/Escort..

[소프트웨어 설계 패턴 C#] 12. 프락시 패턴(Proxy Pattern) - 원격지 프락시

12. 프락시 패턴(Proxy Pattern) - 원격지 프락시 프락시 패턴은 사용하는 개체를 통해 실제 개체를 제어하는 패턴입니다. 프락시 패턴은 사용하는 목적과 방법에 따라 원격지 프락시와 가상 프락시, 보호용 프락시, 스마트 참조자로 구분할 수 있습니다. 원격지 프락시는 사용할 실제 개체가 클라이언트와 다른 위치에 있을 때 원격지에 있는 개체처럼 사용할 수 있는 프락시를 말합니다. 가상 프락시는 사용할 실제 개체의 특정 행위가 많은 시간이 들 때 비 동기적으로 수행할 수 있게하여 사용자가 작업이 완료되는 것을 기다리지 않게 해 주는 프락시입니다. 보호용 프락시는 개체의 기능을 권한에 따라 사용하는 수준을 다르게 해 주는 프락시입니다. 스마트 참조자는 여러 곳에서 사용하는 개체가 있다면 실제 개체를 ..

반응형