반응형

클래스 다이어그램 33

[C#] 전략 패턴(Strategy Pattern) - 설계(Design)

23. 전략 패턴(Strategy Pattern) 23. 3 디자인 전략 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 사진 파일을 관리하는 컬렉션에서 다양한 형태로 사진 개체의 정보를 보여주는 프로그램으로 하겠습니다. 사진의 정보를 보여주는 방법에는 자세히 보기와 간략 보기를 제공할 것입니다. 사용자는 사진을 보관하는 컬렉션의 보기 모드를 설정을 할 수 있고 이에 따라 사진의 정보를 자세하게 보여주거나 간단히 보여줄 수 있어야 합니다. 그리고, 다른 형태로 사진의 정보를 보여주는 알고리즘을 추가 및 변경이 용이해야 합니다. 이를 위해 사진 컬렉션에서 사진의 정보를 보여주는 부분을 별도의 형식으로 정의할 것입니다. 사진의 정보를 보여주는 알고리즘을 인터페이스 IView로 정의하고 사진 개체의 정보를 ..

[C#] 상태 패턴(State Pattern) - 설계(Design)

22. 상태 패턴(State Pattern) 22. 3 디자인 상태 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 카메라의 상태에 따라 다이얼을 조절하였을 때 조리개의 F값을 조절하거나 셔터 스피드를 조절하는 것으로 하겠습니다. 상태 패턴을 적용을 하지 않았을 경우에는 카메라 내부에서 상태에 따라 조리개의 F값을 조절하거나 셔터 스피드를 조절할 것을 상태 패턴을 적용하여 상태 개체를 통해 이들 작업을 대행하도록 하겠습니다. 예제로 사용할 프로그램에서의 카메라 상태는 정보 버튼을 누른 상태와 뗀 상태가 존재하며 상태에 따라 다른 동작을 하는 것은 다이얼을 통해 값을 증가하거나 감소시키는 것입니다. 이에 인터페이스 IState에서는 증가와 감소에 해당하는 메서드에 대한 약속을 정의합니다. 그리고, 버튼을..

[C#] 감시자 패턴(Observer Pattern) - 설계(Design)

21. 감시자 패턴(Observer Pattern) 21. 3 디자인 감시자 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 사진을 보정하는 응용을 소재로 하겠습니다. 응용에는 사진 개체를 보정을 하면 이에 대한 색조, 명도, 채도를 나태내는 뷰어로 구성을 하려고 합니다. 만약, 사진 개체의 정보가 변경되면 각 뷰어는 이에 대한 변경 통보를 받아 화면에 변경된 값을 보여줄 것입니다. 만약, 감시자 패턴을 적용하지 않는다면 사진 개체는 각 뷰어에게 변경 통보를 해야 하고 각 뷰어는 이를 화면에 나타내야 하기 때문에 의존 관계에 있게 됩니다. 이 경우에 사진 개체는 다른 뷰어와 결합도가 강해 유연성이 떨어지게 됩니다. 여기에서는 사진과 같이 자신의 상태를 다른 개체에게 통보해야 하는 형식들의 추상 클래스 ..

[C#] 메멘토 패턴(Memento Pattern) - 설계(Design)

20. 메멘토 패턴(Memento Pattern) 20. 3 디자인 메멘토 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 사진을 보정하는 응용을 소재로 하겠습니다. 응용은 사진에 대한 보정 작업을 수행할 수 있는데 보정 작업을 하는 도중에 취소를 요청하면 원래 사진으로 복원이 가능하게 할 것입니다. 응용은 App, 사진은 Picture 이름의 클래스를 사용하고 원본 Picture 개체 정보를 보관하는 Snapshot 형식을 정의할 것입니다. 응용에 사진이 설정이 되면 사진 개체에게 스냅샷을 만들어 줄 것을 요청하여 보관을 합니다. 그리고, 작업을 취소 요청을 하면 보관했던 스냅샷을 사진 개체에게 전달하여 복원하도록 할 것입니다. [그림 ] 메멘토 패턴 설계 예제 클래스 다이어그램 2016/04/28 ..

[C#] 중재자 패턴(Mediator Pattern) - 설계(Design)

19. 중재자 패턴(Mediator Pattern) 19. 3 디자인 중재자 패턴에 대한 설명을 위한 예제는 카메라의 반 자동 모드에서 중재자를 통해 조리개 값의 변화와 셔터 스피드의 변화에 대한 상호작용을 하는 프로그램을 작성해 볼께요. 프로그램에는 사용자와 상호작용을 하는 Camera 개체가 있습니다. Camera 개체 내부에는 내부 중재자 개체인 InnerMode 형식의 개체가 있고 셔터 스피드를 관리하는 Shutter, 조리개를 관리하는 Iris라 정하였습니다. Camera 형식의 개체는 내부에 InnerMediator 개체와 Iris, Shutter 개체로 구성되어 있습니다. 사용자에 의해 촬영 모드가 변경 요청이 오면 이를 InnerMediator 개체에게 전달합니다. 그리고, 셔터 스피드 값..

[C#] 반복자 패턴(Iterator Pattern) - 설계(Design)

18. 반복자 패턴(Iterator Pattern) 18. 3 디자인 C#에서는 IEnumerator, IEnumerable 인터페이스를 약속하고 ArrayList나 배열과 같은 컬렉션들이 이들 인터페이스를 구현 약속함으로써 사용자가 foreach 구문을 통해 컬렉션의 요소들을 반복적으로 접근할 수 있게 제공하고 있습니다. 여기에서는 이러한 부분이 C#에 제공하지 않는다는 관점에서 반복자 패턴을 표현해 보려고 합니다. 반복자 패턴에 대한 설명을 위한 예제 프로그램은 추상화 컬렉션을 파생받은 배열 형식에 대한 정의와 반복자를 파생받은 배열 반복자를 정의한 것이 맞게 작성된 것인지를 확인하는 예광탄으로 하겠습니다. 추상화 된 컬렉션에는 개체를 보관하거나 삭제할 수 있고 전체를 제거하거나 보관된 개체를 얻어올..

[C#] 해석자 패턴(Interpreter Pattern) - 설계(Design)

17. 해석자 패턴(Interpreter Pattern) 17. 3 디자인 해석자 패턴에 대한 설명을 위한 예제 프로그램은 매크로를 통해 사진 보정을 할 수 있게 하는 프로그램입니다. Macro는 각 표현을 해석할 수 있는 개체들을 리스트 형태로 갖고 있습니다. 그리고, Expression 개체들은 입력된 구문을 해석을 하게 되고 뒤에 연결된 다른 Expression 개체가 있으면 해석된 부분을 제외한 구문을 해석을 하게 할 것입니다. 그리고, 사진 개체를 변환을 요청하면 리스트의 각 Expression 개체들은 이미 해석된 내용에 맞게 사진을 보정을 하도록 하겠습니다. 보통 해석자 패턴은 복합체 패턴이나 플라이급 패턴 등과 혼합하여 자주 사용이 되는데 여기에서는 책임 연쇄 패턴과 혼합하여 보았습니다. ..

[C#] 명령 패턴(Command Pattern) - 설계(Design)

16. 명령 패턴(Command Pattern) 16. 3 디자인 명령 패턴에 대한 설명을 위한 예제 프로그램은 사진 관리자에 관한 소재를 대상으로 하겠습니다. 사용자와 상호작용을 하는 UIPart는 클라이언트 역할을 하며 사진을 추가하거나 사진의 정보를 간단히 보여달라는 명령 혹은 상세히 보여달라는 명령을 요청하는 주체입니다. PictureManager는 UIPart에서 전달된 명령에 따라 파일을 보관하고 보여주는 등의 작업을 수행합니다. 명령 패턴으로 예제 프로그램을 작성할 것이기 때문에 PictureManager에서 수행할 추상적인 행위와 구체적인 행위는 분리하였습니다. 수행할 추상작인 행위에 대한 형식 정의는 IExecute인터페이스에 명령을 수행할 수 있는 Execute 메서드에 대한 약속을 하..

[C#] 책임 연쇄 패턴(Chain of Responsibility Pattern) - 설계(Design)

15. 책임 연쇄 패턴(Chain of Responsibility Pattern) 15. 3 디자인 책임 연쇄 패턴에 대한 설명을 위한 예제 프로그램은 사진 보정에 관한 소재를 대상으로 하겠습니다. 사용자와 상호작용을 하는 UIPart는 클라이언트 역할을 하며 사진을 보정하는 개체에게 보정 명령을 요청하는 주체입니다. 사진을 보정하는 개체들은 UIPart에서 전달된 명령을 처리하거나 연결된 다른 사진 보정 개체에게 전달하게 할 것입니다. 이를 위해 추상 클래스로 ChangeHandler를 정의하였고 보정 명령을 받아 수행할 수 있는 ChangeRequest 메서드에 대한 약속을 멤버로 정의하였습니다. 그리고, 다른 사진 보정 개체에게 전달된 명령을 전달할 수 있게 하였습니다. 예제 프로그램에서는 사진 보..

[C#] 프락시 패턴(Proxy Pattern) 보호용 프락시 - 설계(Design)

14. 프락시 패턴(Proxy Pattern) - 보호용 프락시 14. 3 디자인 프락시 패턴 중에 보호용 프락시를 설명하기 위한 예제 프로그램은 사진 관리 프로그램입니다. 프로그램 내부에는 사진과 보호용 프락시인 보호용 사진이 있고 이들을 일반화 시킨 IView가 있습니다. 그리고, 이들을 사용하는 사진 관리자를 만들 것입니다. 사진과 보호용 사진은 IView 인터페이스를 구현 약속한 클래스이므로 IView 인터페이스 형식 변수를 통해 일관되게 사용할 수 있습니다. 대신 보호용 사진의 경우 사용자를 설정하거나 사용 가능한 사용자를 추가하는 메서드를 제공하여 권한이 있는 사용자만 해당 사진에 접근할 수 있게 할 것입니다. 사진 관리자는 IView 인터페이스 형식 개체를 관리할 수 있으며 사용자에 의해 일..

반응형