Abstract factory : 인스턴스화 할 패토리에 대한 결정을 중앙 집중화 함
Factory method : 여러 개의 구현 중에 특정 타입의 객체를 선택 생성하는 작업을 중앙 집중화함
Builder : 생성 절차는 동일하나 서로 다른 결과를 가져오는 경우, 복잡한 객체의 구축을 표현(represention)과 분리함
Lazy initialization : 객체 생성, 값 계산, 다른 값 비싼 프로세스를 실제로 필요한 시점까지 지연하는 전술
Object pool : 더이상 사용하지 않는 객체의 재활용을 통해 값 비싼 획득 및 해지를 피함
Prototype pattern : 어떤 애플리케이션에서 표준적인 객체 생성이 값비쌀 때 사용함
Singleton pattern : 클래스의 객체 생성을 하나로 제한함
Adapter : 어떤 클래스를 위해, 클라이언트가 기대하는 하나의 인터페이스를 채택함
Bridge : 추상적인 부분을 구현과 분리함으로써 두 요소가 독립적으로 확장 가능하게 함
Composite : 각 객체가 동일한 인터페이스를 가지는 객체들의 트리구조
Decorator : 상속을 사용할 경우 클래스 갯수가 지수적으로 늘어날 경우, 클래스에 기능 추가
Facade : 기존의 복잡한 인터페이스들을 사용하기 쉽도록 단순화한 인터페이스 생성
Flyweight : 공간을 절약하기 위해 공통의 속성을 공유하는 많은 수의 객체
Proxy : 다른 것들을 위한 인터페이스 역할을 하는 클래스
Chain of responsibility : 명령 객체가 로직을 포함하고 처리하는 객체에 의해 다른 객체로 전달되거나 처리됨
Command : 행위와 매개변수를 포함하고 있는 명령 객체
Interpreter : 특정 문제 집합을 신속하게 풀기 위해 특수화된 컴퓨터 언어를 구현함
Iterator : 객체 내부 표현방식을 노출하지 않고 집합 객체의 요소에 순차적으로 접근할 때 사용함
Mediator : 하위 시스템 안에서 인터페이스의 집합을 위하여 통합된 인터페이스를 제공
Memento : 객체를 이전의 상태로 되돌릴 수 있는 역량을 제공함 (Rollback)
Null Object : 객체의 기본값(default value)으로 작동하도록 설계함
Observer : 별칭 : Puvlish/Subscribe 또는 이벤트 리스너; 다른 객체에 의해서 발생할 이벤트를 관찰하기 위해 객체를 등록
State : 실행 시점에 알고리즘을 선택할 수 있도록 함
Specification : 부울리언 방식으로 재결합할 수 있는 비즈니스 로직
Template method : 프로그램의 뼈대를 기술함으로써 처리 절차를 공유함
Visitor : 객체로부터 알고리즘을 분리하는 방법
package ch18;
public class Company {
private static Company instance = new Company();
private Company() {}
public static Company getInstance() {
if (instance == null) {
instance = new Company();
}
return instance;
}
}
package ch18;
public class CompanyTest {
public static void main(String[] args) {
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
}
}
ch18.Company@26f0a63f
ch18.Company@26f0a63f