10. Design Pattern

zhyun·2020년 10월 19일
0

HighJava

목록 보기
59/67
post-thumbnail

참고

점층적 생성자 패턴, 자바빈즈 패턴, 빌더패턴
디자인패턴

디자인 패턴이란

  • 숙련된 객체지향소프트웨어개발자에 의해 사용되는 베스트 사례모음집
  • 소프트웨어 개발 중 직면하게 되는 일반적인 문제들의 해결을 위한 솔루션 모음집
  • 오랜 기간 동안 수많은 개발자들에 의해 시도되고 테스트된 솔루션 모음집

디자인 패턴 종류

생성(Creational)패턴

  • 객체 생성 방법을 추상화하기 위한 패턴 상황에 맞는 적절한 객체 생성으로 효율성 제고
    • 추상 팩토리 (Abstract Factory)
    • 빌더 (Builder)
    • 팩토리 (Factory)
    • 팩토리 메서드 (Factory Method)
    • 원형 (Prototype)
    • 단일체 (Singleton)

1. 추상 팩토리 (Abstract Factory)

  • JAVA에서는 Interface에 해당
  • 구체적인 클래스를 지정하지 않고 관련성을 갖는 객체들의 집합을 생성하거나 서로 독립적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공하는 패턴

2. 빌더 (Builder) ★

  • 복합 객체의 생성 과정과 표현방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를
    만들 수 있게 하는 패턴
  • 복합객체를 통해서 하나의 객체를 만드는 형태
  • 객체를 만드느 가장 좋은 방법 중 하나
  • 예제 12.DesingPattern /kr.or.ddit.creational.builder

3. 팩토리(Factory) ★

  • 객체 생성방법을 클라이언트에게 노출시키지 않고, 공통 인터페이스를 통해 인스턴스를 생성하도록 하는 패턴
  • 변경될 수 있는 변수를 줄여 유지보수가 용이
  • 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브클래스 쪽에서 내리는 패턴
  • 예제 12.DesignPattern / kr.or.ddit.creational.factory

4. 원형(Prototype)

  • 별로 만날일 없음..
  • 생성할 객체의 종류를 명세하는데에 원형이 되는 예시물을 이용하고, 그 원형을 복사함으로써 새로운 객체를 생성하는 패턴
  • clone을 이용하여 원래만들어진 객체를 복제

5. 단일체(Singleton)

  • 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역전인 접촉점을 제공하는 패턴

구조(Structural)패턴

  • 더 큰 구조 또는 새로운 기능을 형성하기 위해 어떻게 클래스 및 객체를 합성하는가와 관련된 패턴
    • 적응자 (Adapter)
    • 가교 (Bridge)
    • 복합체 (Composite)
    • 장식자 (Decorator)
    • 퍼사트 (Facade)
    • 플라이급 (Flyweight)
    • 프록시 (Proxy)

1.적응자(Adapter)

  • 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
  • 인터페이스 기반으로 설계
  • 호환되지 않는 두 인터페이스 사이의 브리지로 작동, 두개의 독립적인 인터페이스의 기능을 결합하기 때문에 이러한 유형의 설계 패턴은 구조적 패턴으로 제공

2.가교(Bridge)

  • 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴
  • 자주 안나와..

3.복합체(Composite)

  • 객체들의 관계를 트리 구조로 구성하여 부분~전체 계층을 표현하는 패턴

4.장식자(Decorator) ★

  • 기능을 덧붙일때!!!
  • 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴
  • 보조스트림 -> 장식자로 이루어짐
  • 예제 12.DesignPattern / kr.or.ddit.structural.decorator

5.퍼사드(Facade)

  • 서브 시스템에 있는 인터페이스 집합에 대해서 하나의 통합된 인터페이스를 제공하는 패턴

6.플라이급 (Flyweight)

  • 별로 안나와..
  • 크기가 작은 객체가 여러개 있을 때, 공유를 통해 이들을 효율적으로 지원하는 패턴

7.프록시(Proxy)

  • Decorator와 비슷? (기본기능에 새로운 기능 추가)
    • 기능을 중간에서 사용할 기능에 대한 권한(검증,인증)을 준다?, 대리인 & 중간에 통제 역할
  • 어떤 다른 객체로 접근하는 것을 통제하기 위해서 그 객체의 대리자(surrogate) 또는 자리채움자(placeholder)를 제공하는 패턴

행동(Behavioral)패턴

  • 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
  • 어떤 처리의 책임을 어느 객체에 할당하는 것이 좋은지, 알고리즘을 어느 객체에 정의하는 것이 좋은지 등을 다루는 패턴
    • 책임 연쇄 (Chain of Responsibility)
    • 명령(Command) ★ 서블릿할때
    • 해석자 (Intepreter)
    • 반복자 (Iterator)
    • 중재자 (Mediator)
    • 메멘토 (Memento)
    • 감시자 (Observer)
    • 상태 (State)
    • 전략 (Strategy)
    • 템플릿 메서드 (Template Method)
    • 방문자 (Visitor)

1.책임 연쇄 (Chain of Responsibility)

  • 별로 안나와..
  • 요청을 처리할 수 있는 기회를 하나 이상의 객체에게 부여하여 요청을 보내는 객체와 그 요청을 받는 객체 사이의 결합을 피하는 패턴

2.명령(Command) , 예제 해보기 ★

  • 요청을 객체의 형태로 캡슐화하여 서로 요청이 다른 사용자의 매개변수화, 요청 저장 또는 로깅, 그리고 연산의 취소를 지원하게 만드는 패턴
  • 명령 자체를 객체화 시키는 것

3.해석자(Interpreter)

  • 볼일 없음..
  • 주어진 언어에 대해, 그 언어의 문법을 위한 표현 수단을 정의하고, 이와 아울러
    그 표현 수단을 사용하여 해당 언어로 작성된 문장을 해석하는 해석기를 정의하는 패턴

4.반복자(Iterator), 예제 해보기 ★

  • 내부 표현부를 노출하지 않고 어떤 객체 집합에 속한 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴

5.중재자 (Mediator)

  • 별로 안나와..
  • 한 집합에 속해있는 객체들의 상호작용을 캡슐화하는 객체를 정의하는 패턴

6.메멘토(Memento)

  • 별로 안나와..
  • 캡슐화를 위배하지 않은 채로 어떤 객체의 내부 상태를 잡아내고 실체화시켜, 이후에 해당 객체가 그 상태로 되돌아올 수 있도록 하는 패턴

7.감시자(Observer),예제 해보기 ★

  • 객체들 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때
    그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지 받고 자동으로 갱신될 수 있게 만드는 패턴 // notify(Thread)

8.상태(State)

  • command 패턴과 비슷
  • 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게끔 허가하는 패턴

9.전략(Strategy)★

  • 동일 계열의 알고리즘군(기능)을 정의하고, 각각의 알고리즘을 캡슐화하며, 이들을 상호교환이 가능하도록 가능하도록 만드는 패턴
  • 예제 12.DesignPattern / kr.or.ddit.behavioral.strategy

10. 템플릿 메서드(Template Method)

  • 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미루는 패턴

11. 방문자 (Visitor)

  • 객체 구조를 이루는 원소에 대해 수행할 연산을 표현하는 패턴
profile
HI :)

0개의 댓글