김선우의 머릿속
디자인 패턴(Design Pattern) 본문
- 디자인 패턴이란
- 디자인 패턴의 구조
- 디자인 패턴의 종류(GoF 디자인 패턴의 분류)
- 추상 팩토리(Abstract Factory) : 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들을 조합한 인터페이스를 제공.
- 팩토리 메서드(Factory Method) : 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴.
- 스테이트(state) : 객체의 상태에 따라 객체의 행위 내용을 변경해주는 패턴.
소프트웨어를 설계할 때 자주 발생하는 문제들에 대한 재사용 가능한 해결책.
1)맥락(Context)
문제가 발생하는 여러 상황을 말한다. 패턴이 적용될 수 있는 상황을 뜻함.
2)문제(Problem)
패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들.
3)해결(Solution)
문제를 해결할 수 있게 설계를 구성하는 요소와 그 요소들 사이의 관계를 기술.
1)생성(Creational)패턴 : 객체 생성에 관련된 패턴(객체 생성과 조합을 캡슐화해 유연성 제공)
추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤
2)구조(Structural)패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
어댑터, 브리지, 컴퍼짓, 데코레이터, 퍼사드, 플라이웨이트, 프록시
3)행위(Behavoiral)패턴 : 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴.
책임 연쇄, 커맨드, 인터프리터, 이터레이터, 미디에이터, 메멘토, 옵저버, 테이트, 스트래티지, 템플릿 메소드, 비지터
전략 패턴은 상속을 대체하려는 목적으로, 스테이트 패턴은 코드내의 조건문들을 대체하려는 목적으로 사용.
[팩토리메서드패턴과 추상팩토리의 다른점]
-추상팩토리패턴
추상팩토리패턴은 객체를 사용해 제품을 만들고, 객체의 구성을 통해서 객체를 만든다.
추상팩토리패턴은 제품군을 만들기 위한 추상 형식을 제공하고 있다. 제품이 생산되는 방법은 서브 클래스에서 정의된다. 따라서 팩토리 메소드 패턴을 쓸 때와 마찬가지로 클라이언트와 클라이언트에서 사용하는 실제 구상 제품이 분리된다.
-팩토리메서드패턴
팩토리메서드패턴과 클래스를 사용해서 제품을 만들고, 상속을 통해서 객체를 만든다.
팩토리메서드패턴을 사용하는 이유는 서브클래스를 통해 객체를 만들기 위함이고, 클라이언트와 구상클래스를 분리시켜주는 역할을 한다.