설 연수
하하호홓
설 연수
전체 방문자
오늘
어제
  • 분류 전체보기 (231)
    • Back-End (2)
      • Java (20)
      • JSP (13)
      • Spring (18)
      • Kotlin (0)
      • node.js (0)
    • Front-End (68)
      • JavaScript (19)
      • jQuery (39)
      • Angular (4)
      • HTML (5)
    • Dev-Ops (12)
      • Linux, Cloud (5)
      • docker, k8s (5)
      • ElasticSeach (2)
    • Other (33)
      • OOP (3)
      • 알고리즘 (2)
      • DB (12)
      • Git (1)
      • Swift (4)
    • Backup (65)

블로그 메뉴

    공지사항

    인기 글

    태그

    • docker
    • 404 error
    • MYSQL
    • page not found
    • angular callback
    • angular4
    • RESTful
    • Redis
    • Kafka
    • flex
    • 패스트캠퍼스
    • mongodb
    • Angular
    • jquery invalid
    • INVALID
    • angular 콜백
    • angular2
    • CORS
    • 크로스도메인
    • jOOQ

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    설 연수

    하하호홓

    Other/OOP

    헤드퍼스트 디자인패턴

    2012. 10. 8. 16:58

    - 스트래티지 패턴 - 오리

    알고리즘군을 정의하고 각각을 캡슐화하여 바꿔 쓸 수 있게 만듭니다. 

    스트래티지 패턴을 이용하면 알고리즘을 활용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있습니다.

    * 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정합니다.


    - 옵저버 패턴

    한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다.

    * 상태가 변경되면 다른 객체들한테 연락을 돌릴 수 있게 해줍니다.


    - 데코레이터 패턴 - 커피 옵션

    객체에 추가요소를 동적으로 더할 수 있습니다. 

    데코레이터를 사용하면 서브클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있습니다.

    * 객체를 감싸서 새로운 행동을 제공합니다.


    - 추상 팩토리 패턴

    서로 연관된, 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공합니다.

    구상 클래스는 서브 클래스에 의해 만들어지죠.

    * 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 해줍니다.


    - 팩토리 메소드 패턴

    객체를 생성하귀 위한 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하도록 합니다. 

    팩토리 메소드를 이용하면 인스턴스를 만드는 일을 서브클래스로 미룰 수 있습니다.

    * 생성할 구상 클래스를 서브클래스에서 결정합니다.


    - 싱글턴 패턴

    클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공합니다.

    * 딱 한 객체만 생성되도록 합니다.


    - 커맨드 패턴 - 리모콘

    요청내역을 객체로 캡슐화하여 클라이언트를 서로 다른 욫어 내역에 따라 매개변수화 할 수 있습니다. 

    요청을 큐에 저장하거나 로그로 기록할 수도 있고 작업취소 기능을 지원할 수도 있습니다.

    * 요청을 객체로 감쌉니다.


    - 어댑터 패턴

    클래스의 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다.

    인터페이스가 호환되지 않아 쓸 수 없었던 클래스들을 같이 사용할 수 있게 해줍니다.

    * 객체를 감싸서 다른 인터페이스를 제공합니다.


    - 퍼샤드 패턴

    서브시스템에 있는 일련의 인터페이스에 대한 통합 인터페이스를 제공합니다.

    퍼사드 패턴에서는 서브시스템을 더 쉽게 사용할 수 있게 해 주는 고수준 인터페이스를 정의합니다.

    * 일련의 클래스에 대해서 간단한 인터페이스를 제공합니다.


    - 템플릿 메소드 패턴

    어떤 작업 알고리즘의 골격을 정의합니다.

    일부 단계는 서브클래스에서 구현하도록 할 수 있습니다.

    템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 특정 단계만 서브클래스에서 새로 정의하도록 할 수 있습니다.

    * 알고리즘의 개별단계를 구현하는 방법을 서브클래스에서 결정합니다.


    - 이터레이터 패턴

    컬렉션을 표한하는 방법을 노출시키지 않으면서도 집합체 내에 있는 모든 객체들에 하나씩 접근하는 방법을 제공합니다.

    * 컬랙션이 어떤식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복작업을 처리할 수 있게 해줍니다.


    - 컴포지트 패턴

    객체들을 트리 구조로 구성하여 부분-전체 계층구조를 구현합니다.

    컴포지트 패턴을 이용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다루도록 할 수 있습니다.

    * 클라이언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰 수 있도록 해 줍니다.


    - 스테이트 패턴

    내부 상태가 바뀜에 따라 객체의 행동이 바뀔 수 있도록 해 줍니다.

    마치 객체의클래스가 바뀌는 것 같은 결과를 얻을 수 있습니다.

    * 상태를 기반으로 한 행동을 캡슐화한 다름 위임을 통해서 필요한 행동을 선택합니다.


    - 프록시 패턴

    다른 객체를 대변하는 객체를 만들어서 주 객체에 대한 접근을 제어할 수 있습니다.

    * 객체를 감싸서 그 객체에 대한 접근을 제어합니다.


    - 컴파운드 패턴 - MVC

    두 개 이상의 패턴을 결합하여 일반적으로 자주 등장하는 문제들에 대한 해법을 제공합니다.

    저작자표시 (새창열림)

    'Other > OOP' 카테고리의 다른 글

    객체지향(OOP) paste  (0) 2012.09.14
    interface 를 왜 사용하는가  (0) 2012.09.14
      'Other/OOP' 카테고리의 다른 글
      • 객체지향(OOP) paste
      • interface 를 왜 사용하는가
      설 연수
      설 연수

      티스토리툴바