Coding Note

[정보처리기사] 디자인 패턴(Design Pattern) 본문

정보처리기사

[정보처리기사] 디자인 패턴(Design Pattern)

jinnkim 2022. 6. 30. 15:41

 

디자인 패턴

 


 

 

디자인 패턴

- 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 문제들이 또 발생했을 때 재사용할 수 있는 해결책

- 디자인 패턴은 목적에 따라 생성 - 구조 - 행위 패턴으로 나뉜다.

 

 

 

 

디자인 패턴의 종류

생성 패턴 구조 패턴 행위 패턴
추상 메서드(Abstract Method)
빌더(Builder)
팩토리 메서드(Factory Method)
= 가상 메서드 (Virtual Method)
프로토타입(Prototype)
싱글톤(Singleton)
어댑터(Adapter)
브리지(Bridge)
컴포지트(Composite)
데코레이터(Decorator)
퍼서드(Facade)
플라이웨이트(Flyweight)
프록시(Proxy)
책임연쇄(Chain of Resposibility)
커맨드(Command)
인터프리터(Interpreter)
이터레이터(Iterator)
중재자(Mediator)
메멘토(Memento)
옵서버(Observer)
상태(State)
스트래티지(Strategy)
템플릿 메서드(Template Method)
방문자 패턴(Vistor)

 

 

 

 

1. 생성 패턴

- 객체 생성에 관련된 패턴

- 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다.

 

 

2. 구조 패턴

- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴

 

 

3. 행위 패턴

- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

- 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.

 

 

 

시험 문제에 자주 나오는 디자인 패턴! 암기하자!

 

 

1. 생성패턴

  •  추상 메서드(Abstract Method)

- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴

 

  • 빌더 패턴(Builder Pattern)

-  복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴

   (생성자 오버라이딩)

 

  • 팩토리 메서드(Factory Method) = 가상 메서드 (Virtual Method)

- 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴

 

  • 프로토타입(Prototype)

- 인스턴스를 사용해 새롭게 생성할 객체의 종류를 명시하여 새로운 객체가 생성될 시점에 인스턴스의 타입이 결정되도록 하는 패턴

 

  • 싱글톤 패턴(Singleton)

- 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴

 

 

 

 

2. 구조 패턴

 

  • 어댑터(Adapter)

- 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성 없는 인터페이스 때문에 동작할 수 없는 클래스들을 함께 작동하도록 하는 패턴

 

  • 브리지(Bridge)

- 구현부에서 추상층을 분리하여 각자 독립적으로 변형 및 확장이 가능하도록 만드는 패턴

- 기능과 구현, 별도의 클래스로 구현

 

  • 프록시(Proxy)

-  실제 기능을 수행하는 객체 대신 가상의 객체를 사용해 로직의 흐름을 제어하는 디자인 패턴

 

  • 컴포지트(Composite)

- 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴

 

  • 데코레이터(Decorator)

- 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴

 

 

 

 

 

3. 행위 패턴

 

  • 책임 연쇄(Chain of Resposibility)

-  요청, 응답 처리를 분리하여 구현한 패턴

- 요청을 처리하는 동일 인터페이스 객체들을 체인 형태로 연결해 놓은 패턴

- 특정 작업을 여러 객체들이 연쇄적으로 처리 기회를 가지는 패턴

 

  • 커맨드(Command)

- 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴

 

  • 인터프리터(Interpreter)

- 문법적 규칙을 클래스화 하여, 일련의 규칙을 통해 언어/문법을 해석하는 패턴

 

  • 옵서버(Observer)

- 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴

- 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야한다.

 

  • 스트래티지(Strategy)

- 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴

 

  • 비지터(Vistor)

- 알고리즘을 객체 구조에서 분리시키는 디자인 패턴

 

 

Comments