CS/Design pattern
Decorator Pattern 객체에 추가적인 책임을 동적으로 부여할 수 있도록 설계한다.데코레이터는 서브클래스(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 한다.상속으로 문제를 풀면 너무 많은 상속 관계가 발생할 수 있음상속을 사용하지 않고, 새로운 기능을 추가하는 것이 목표데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 추가할 수 있도록 함데코레이터 패턴에서의 상속은 기능(행동)을 물려받기 위해서가 아니라 형식을 맞추기 위해서 사용된다. 1. Component : 각 구성요소는 직접 쓰일 수도 있고 데코레이터로 감싸져서 쓰일 수도 있음. 클래스 또는 인터페이스2. ConcreteComponent : 새로운 행동을 동적으로 추가3. Decorator : 자신이 장식할 구성..
Observer Pattern Observer 패턴은 객체 간에 일대다 의존성을 정의하며, 어떤 객체의 상태가 변경되면 그 객체에 의존하는 다수의 객체들이 자동으로 알림을 받아 업데이트될 수 있도록 하는 디자인 패턴이다. 해당 디자인 패턴에는 두 가지 주요 역할이 있다.Observer(관찰자): 관찰 대상인 Subject의 상태 변화를 감시하고, 변화가 있을 때마다 적절한 Action을 취하도록 설계한다.구현: Observer 인터페이스나 추상 클래스를 통해 정의되며 이 인터페이스에는 주로 update() 메서드가 포함되어 있어서 Subject로부터의 업데이트를 처리한다.Subject(주제): 상태 변화가 일어날 때, 그 변화를 Observer들에게 알리는 역할을 한다. Subject는 Observer들..
Strategy Pattern 같은 종류의 작업을 하는 알고리즘을 정의, 각 알고리즘을 캡슐화, 그리고 알고리즘들을 바꿔 유동적으로 사용할 수 있도록 하는 디자인패턴.알고리즘을 사용하는 클라이언트로 부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 한다.클라이언트에 모든 알고리즘을 포함시키는 것은 클라이언트 코드의 양이 늘어나고 복잡해진다. 이는 유지 보수가 어려워지며, 새로운 알고리즘 추가를 하려면 기존 코드를 수정해야 하는 문제가 있다. Context : 캡슐화된 알고리즘을 멤버 변수로 포함하며, 알고리즘을 교환해서 적용시킬 수 있다.Strategy : 컴파일 시점에서 사용하는 캡슐화된 알고리즘, 실제 구현은 하위 Strategy(n) 클래스에 위임, 인터페이스 혹은 추상클래스로 구현한다.St..
Iterator Pattern 여러 요소들을 담고 있는 객체의 내부 구조에 대한 이해 없이 각 요소를 순서대로 접근하고 사용할 수 있도록 방법을 제공한다. Collection에서의 Iterator Pattern 사실 우리가 이미 일반적으로 사용하고 있는 Collection의 경우에도 Iterator 패턴이 적용되어 있다. import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args){ List list = new ArrayList(); for(Integer n : list){ System.out.println(n); ..
Singleton pattern 클래스가 하나의 인스턴스만을 만들 수 있도록 하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 하는 디자인 패턴을 말한다.시스템에서 다른 상태의 인스턴스가 여러 개 필요 없는 경우 해당 디자인 패턴을 사용한다. 여러 객체가 생성되면 관리가 어려우며, 이를 위해 객체 생성자를 중앙 관리하게 하고, 객체가 1개라서 일관된 상태의 결과를 만들게 된다. 고전적인 싱글턴 패턴 public class Singleton { private static Singleton instance = null; private Singleton() { System.out.println("Singleton constructor"); } public static Singleton getI..