프로그래밍/디자인패턴15 다시 시작하는 디자인패턴 최근 다시 디자인 패턴에 대해서 다시 한번 서적을 사서 공부를 시작하였는데, 해당 부분에 대해서 이곳에 공유 하고자 합니다. 서적은 [JAVA 언어로 배우는 디자인 패턴 입문] 이라는 책이고 그 부분을 정리, C#( Unity ) 으로 다시 재 구성하는 작업을 진행할까 합니다. 해당 다이어그램은 [Star UML 2] 툴을 사용할 것입니다. 2016. 4. 29. 데코레이터(Decorator) 패턴 특정 객체의 기능을 동적으로 추가하거나, 삭제 할 때 편리하게 사용 할 수 있는 패턴이다. 유용한 상황 : 다른 객체에 영향을 주지 않으면서 새로운 기능을 추가 하고자 할 때, 특시 Client 측에서는 이렇게 새로운 기능이 추가된 객체와 그렇지 않은 객체를 따로 구분하고 싶지 않을 때 특정 객체에 동적으로 추가된 기능을 삭제하고 싶을 때. 단, 이 경우 추가된 기능에 해당하는 객체가 아닌 원래 객체가 가진 기능은 삭제할 수 없다. 클래스 상속을 통한 기능 확장이 불가능하거나 어려울 때, 예를 들어 서로 독립된 상속 관계가 많아 이들을 조합하면, 너무 많은 하위 클래스가 만들어질 우려가 있는 경우 또는 클래스 정의가 숨겨져 있어 상속이 불가능할 때. 예제는 기본 베이스 커피에 토핑을 추가 한다고 하였을 .. 2010. 4. 4. 스트레티지(strategy) 패턴 기본적인 구조는 최상위 클래스를 상속받아 그 클래스들에 기능을 추가한다. 라고 보는게 맞을듯. 어떤 상황에 좋은가? 서로 행위만 다를 뿐 밀접한 연관 관계를 가지는 여러 클래스들에 대해 필요한 시점에 어느 한 행위를 수행하는 클래스를 골라 사용하고자 할 때 유용하다. 저장 공간 사용 효율이나 실행 시간 효율 등의 측면에서 다양한 형태의 알고리즘(기능)이 존재해서 상황에 따라 최적의 알고리즘(기능)을 선택해서 사용하도록 할 때 유용하다. 어떤 알고리즘(기능)이 Client가 알아서는 안될 데이터를 사용하거나 알고리즘(기능)에 종속된 복잡한 자료구조(속성)를 사용할 때 유용하다. 이 경우 Strategy 패턴은 Client에게 알고리즘(기능)이 사용하는 데이터나 자료구조(속성)를 숨겨주는 역활을 한다. 어떤.. 2010. 4. 3. 이전 1 2 3 다음