
데코레이터 패턴 객체에 추가적인 요건을 동적으로 첨가한다. (구성과 위임을 통해) 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 데코레이터 패턴에서는 구상 구성요소를 감싸주는 데코레이터들을 사용한다. 데코레이터 클래스의 형식은 그 클래스가 감싸고 있는 클래스의 형식을 반영한다. (상속, 인터페이스 구현을 통해 자신이 감쌀 클래스와 같은 형식을 가지게 된다.) 데코레이터에서는 자기가 감싸고 있는 구성요소의 메소드를 호출한 결과에 새로운 기능을 더함으로써 행동을 확장한다. 구성요소의 클라이언트 입장에서는 데코레이터의 존재를 알 수 없다. 데코레이터 패턴을 사용하면 자잘한 객체들이 매우 많이 추가될 수 있고, 코드가 복잡해질 수 있다. public abstrac..
* 옵저버 패턴 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의 * Java 내장 옵저버 패턴 작동 방식 Observer 객체 : java.util.Observer 구현 Subject 객체 : java.util.Obervable 상속 * java.util.Observable 단점 . 클래스이기 때문에 상속해서 사용해야한다. 그래서 재사용성에 제약. . 인터페이스가 없기 때문에 Observer API와 잘 맞는 클래스를 직접 구현 불가. . Observable 클래스의 핵심 메소를 외부에서 호출 불가. 서브클래스를 인스턴스 변수로 사용 불가. -> 직접 API 구현해서 사용 * 디자인 원칙 1. 애플리케이션에서 달라지는 부분을..

소프트웨어 개발에 있어서 바뀌지 않는 것 : 변화 나중에 어떻게 바뀔 것인지 생각해라 디자인패턴 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책 훌륭한 객체지향 디자인 품질을 갖추고 있는 시스템을 개발하는 방법을 제공 구상 (Concreate) 클래스란? 추상 (Abstract) 클래스와 대조적으로 모든 메서드를 구현한 클래스 구성(Composition) : A has B (캡슐화, 느슨한 결합) 상속(Inheritance) : A is B 전략 패턴 알고리즘을 캡슐화하고 이를 교환하여 사용하는 패턴 전략 패턴은 코드의 유연성과 재사용성을 높여주며, 알고리즘의 변경이나 추가에 용이 비슷한 작업을 수행하지만 다양한 알고리즘을 적용해야 하는 경우에 전략 패턴을 사용하여 코드를 구현 C..