본문 바로가기

JAVA/DesignPattern11

디자인패턴 - 데코레이터 패턴 (decorator pattern) 데코레이터 패턴 (decorator pattern) 객체에 추가적인 요건을 동적으로 첨가한다.데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 데코레이터 패턴 클래스 다이어그램 ConcreteComponent에 새로운 행동을 동적으로 추가할수 있다.각 데코레이터 안에는 구성요소(Component)에 대란 레퍼런스가 들어있는 인스턴스 변수가있다.Decorator는 자신이 장식할 구성요소(Component)와 같은 인터페이스 또는 추상 클래스를 구현한다.ConcreteDecoratorA, ConcreteDecoratorB 에는 그 객체가 장식하고있는(데코레이터가 감싸고 있는 Component객체)을 위한 인스턴스 변수가 있다. 따라서 데코레이터는 Component.. 2016. 5. 4.
디자인패턴 - 옵저버 패턴 (observer pattern) 옵저버 패턴 (observer pattern) 한객체의 상태가바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로일대다(one-to-many) 의존성을 정의한다. 옵저버 패턴을 구현하는 방법에는 여러가지가 있지만 대부분 상태를 저장하고있는 주제 인터페이스를 구현한 하나의 주제객체와 주제객체에 의존하고있는 옵저버 인터페이스를 구현한 여러개의 옵저버객체 가 있는 디자인을 바탕으로 한다. 데이터 전달방식은 2가지가 있다.주제객체에서 옵저버로 데이터를 보내는 방식(푸시 방식)옵저버에서 주제객체의 데이터를 가져가는 방식 (풀 방식) 옵저버 패턴 클래스 다이어그램 디자인 원칙. 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다. 옵저버 패턴은.. 2016. 5. 3.
디자인패턴 - 스트래티지 패턴 (strategy pattern) 스트래티지 패턴(strategy pattern) 알고리즘군을 정의하고 각각캡슐화하여 교환해서 사용할 수 있도록 만든다.스트래티지패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할수 있다. 오리 어플리케이션 게임을 운영하는 회사를 다니면서 오리게임을 만든다고 가정했을때.표준적인 객체지향 기법을 사용하여 Duck 이라는 슈퍼클래스를 만든다음 그 클래스를 확장하여 다른 종류의 오리를 만든다. 추상클래스인 Duck 클래스를 ReadHeadDuck 클래스와 MallardDuck 클래스가 상속을 받아 추상메소드인 display()를 각각 구현한다. 문제의 시작1 원래는 그럴 계획이 없었는데..오리들이 물에 떠있는 기능 이외에 날아다녀야하는 요구사항이 생겼다.간단하네.. ? 이제 모든 오리.. 2016. 5. 1.