반응형

전체 글 2934

[소프트웨어 패턴 C#] 19. 중재자 패턴 (Mediator Pattern)

19. 중재자 패턴(Mediator Pattern) 중재자 패턴은 프로그램의 상호작용을 해야 하는 개체들이 서로 복잡하게 관계를 맺고 있을 경우에 상호작용에 관련된 행동을 별도의 형식으로 정의하여 중재를 맡는 개체를 두게 하는 패턴입니다. 프로그램을 작성하다 보면 복잡한 상호작용을 해야 하는 경우 개체들 간의 결합도는 강하게 되고 유연성이 떨어져서 재 사용하기 힘든 경우가 발생합니다. 특히, 하나의 개체에서 다른 개체에게 일방적으로 명령을 하는 것이 아니라 명령을 받는 개체도 특정 조건에서 명령을 내린 개체에게 명령을 내릴 수 있는 경우에는 구조적으로 취약하게 됩니다. 이와 같은 경우에 중재자 패턴을 사용하면 전체적으로 강한 결합도를 부분적으로만 결합도가 강한 상태를 유지하고 많은 부분에서 결합도를 느슨..

[소프트웨어 설계 패턴 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#] 책임 연쇄 패턴(Chain of Responsibility Pattern)

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

[소프트웨어 설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern)

11. 플라이급 패턴(Flyweight Pattern) 프로그램에서 개체가 많아지면 메모리가 많이 차지하게 됩니다. 이럴 때 메모리 효율을 높일 필요성이 있다면 무엇을 해야 할까요? 플라이급 패턴은 이러한 문제를 해결하기 위한 하나의 방법입니다. 플라이급 패턴은 개체의 멤버 필드 중에 각 개체가 반드시 갖고 있어야 할 멤버와 여러 개체가 공유해서 사용할 수 있는 멤버로 분리하는 작업에서부터 출발합니다. 공유해서 사용할 수 있는 멤버가 가질 수 있는 상태의 종류가 개체의 수보다 상대적으로 적다면 플라이급 패턴을 사용하여 메모리 효율을 높일 수 있습니다. 플라이급 패턴에서는 공유해서 사용할 수 있는 상태들을 공유 풀에 형성합니다. 그리고 각 개체는 특정 상태를 참조합니다. 만약, 개체의 수가 상태의 수보다 ..

[소프트웨어 설계 C# 무료 동강] 1. 소프트웨어 패턴 소개

1. 소프트웨어 패턴 소개1부 생성 패턴들 1. 추상 팩토리 패턴(Abstract Factory Pattern)2. 빌더 패턴(Builder Pattern)3. 팩토리 메서드 패턴(Factory Method Pattern)4. 원형 패턴(Prototype Pattern)5. 단일체 패턴(Singleton Pattern)2부 구조 패턴들 6. 적응자 패턴 (Adapter Pattern)7. 가교 패턴 (Bridge Pattern)8. 복합체 패턴 (Composite Pattern)9. 장식자 패턴 (Decorator Pattern)10. 퍼샤드 패턴 (Facade Pattern)11. 플라이급 패턴(Flyweight Pattern)12. 프락시 패턴 (Proxy Pattern) - 원격 프락시13. 프락시..

반응형