본문 바로가기
개발/일반

디자인 패턴 ( DESIGN PATTERN ) 요약

by 로그인시러 2016. 11. 24.

* OCP (Open-Closed Principle)

 - OCP는 가장 중요한 디자인 원칙 가운데 하나다.

 - 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 있어서는 닫혀 있어야 한다.

 - 즉 기존 코드는 건드리지 않은 채로 확장을 통해서 새로운 행동을 간단하게 추가할 수 있도록 하면,

   새로운 기능을 유연하게 추가할 수 있어, 주변 환경에 잘 적응할 수 있으면서도 강하고 튼튼한 디자인을 만들 수 있다.

   참고 : http://goo.gl/aiUVD




출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=68039

  • 템플릿 메소드 패턴(추상클래스)
    • 요구 사항마다, 서브 클래스싱.
    • 서브 클래스에는 늘 부모클래스의 알고리즘이 섞임
      즉, 일부 기능만 위임하고자 했지만 부모클래스의 모든 기능을 가지게 됨.


  • 전략 패턴
    • 권한이 부모클래스 객체에 있어서, 전략객체가 작동함
    • 참고) http://hyeonstorage.tistory.com/146
    • 예) 템플릿/콜백 : http://blog.daum.net/jungjin1980/421  (여기에서 템플릿은 특정한 알고리즘이다. 따라서 전체적인 구조 설계 패턴은 아니다.)
    • 전략 패턴은 여러개의 interface 를 구현한 인스턴스를 사용하는데, 
      템플릿/콜백은 보통 annonymous inner class (보통 한개의 인터페이스) 를 사용한다.

  • 템플릿 패턴 vs 전략 패턴 
    • '상속보다는 구성(composition)' 이라는 디자인 원칙처럼, 그냥 템플릿 메소드 패턴보다는 전략 패턴 즉 템플릿/콜백같은 디자인을 사용하자.
    • 구현 상속보다는 인터페이스 상속을 사용하자

  • 데코레이터 패턴
    • 추가되는 요구사항(기능) 들을 모두 서브클래싱하는 것이 비효율적일 때,
      서브클래스들을 중첩(ex]생성자 활용?)시켜 동적으로 사용할 수 있도록 만든다.

  • 전략 패턴 vs 데코레이터 패턴
    • 객체 외부에서 행동을 추가하는 방식, 즉 객체 그 자체를 재활용하는 방식은 데코레이터 패턴, 따라서 외부에서 어떻게 활용하는 지 알 수 없지만, 알고리즘 내부에서 사용하는 객체를 추상화하여 사용하는 방식이 전략패턴이다.

  • 팩토리 메소드 패턴, 추상 팩토리 패턴
    • Factory class 를 사용해서 다양한 종류의 객체 (같은 인터페이스 또는 추상클래스) 를 생성한다.
    • 팩토리 메소드 패턴

    • 추상팩토리 패턴
      • Factory class 마저 추상화 한다.



  • 플라이 웨이트 패턴
  • 기타
    • '템플릿 ...' 과 '팩토리 ...' 는 근본적으로 같은 형태를 띄지만, 내용상 템플릿은 알고리즘을 팩토리는 인스턴스를 다룬다는 점에서 차이가 있다.

 

'개발 > 일반' 카테고리의 다른 글

java set 으로 union, intersection, difference, reverse  (0) 2016.12.27
BufferedReader 는 threadsafe?  (0) 2016.11.24
UML 표기법  (0) 2016.11.24
JAVA arrays contains  (0) 2016.11.11
울트라 에디트 정규식  (0) 2016.11.09

댓글