[Design Pattern] 디자인 패턴 종류 및 특징
디자인 패턴은 크게 생성, 구조, 행위 패턴으로 분류할 수 있다.
생성(creatinal) 패턴
: 객체 생성과 관련한 패턴. 객체 생성에 있어서 프로그램 구조에 영향을 크게 주지 않는 유연성을 제공.
ex) 추상팩토리 (abstract factory), 팩토리메서드 (factory method), 싱글톤 (singlethon)
구조(structural)패턴
: 클래스나 객체를 조합해서 더 큰 구조를 만드는 패턴을 의미한다.
ex) 어댑터 (adapter), 브릿지 (bridge), 컴퍼지트 (composite), 파사드 (facade), 프록시 (proxy)
행위(behavioral)패턴
: 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴을 의미한다.
ex) 커맨드 (command), 옵저버 (observer), 스트레티지 (strategy)
생성(creatinal) 패턴
추상팩토리 (abstract factory) : 구체적인 클래스에 의존하지 않고 의존적인 객체들의 조합을 만드는 인터페이스를 제공
팩토리메서드 (factory method) : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
싱글톤 (singlethon) : 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴
구조(structural)패턴
어댑터 (adapter) : 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
브릿지 (bridge) : 구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴
컴포지트 (composite) : 여러 개의 객체들로 구성된 객체들을 클라이언트에서 구별 없이 다루게 해주는 패턴
파사드 (facade) : 서브시스템에 있는 인터페이스 집합에 대한 통합된 하나의 인터페이스를 제공하는 패턴
프록시 (proxy) : 어떤 다른 객체로의 접근을 통제하기 위해 그 객체의 매니저나 자리 채움을 제공하는 패턴
행위(behavioral)패턴
커맨드 (command) : 실행될 기능을 캡슐화해서 여러 기능을 실행할 수 있도록 하는 재사용성이 높은 클래스를 설계
옵저버 (observer) : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게도 연락이 가서 자동으로 내용이 갱신되는 방법
스트레티지 (strategy) : 행위를 클래스로 캡슐화해서 동적으로 행위를 자유롭게 바꿀 수 있게 하는 패턴