JAVA/디자인 패턴

[Design Pattern] 디자인 패턴이란?

dev_rosieposie 2023. 6. 28. 18:42

Goal 

  1. 디자인 패턴이란 무엇인지 알아보고 이해한다
  2. 디자인 패턴에 필요한 도구들과 그 종류들을 알아본다

 

 디자인 패턴   

프로그램을 작성하다 보면 비슷 비슷한 상황이 직면하게 되는 경우가 많은데, 그러한 상황에서 개발자들이 고민을 정제한 사실 상의 표준 설계패턴이다. 디자인 패턴은 객체 지향의 특성 중 상속(extends), 인터페이스(interface/implements), 합성(객체를 속성으로 사용)을 이용한다.

 

왜  디자인 패턴을 사용해야 할까?

  1. 개발자 사이에서 서로 이해할 수 있는 용어를 제공하고, 빠르고 정확한 파악이 가능하여 의사소통이 쉽다
  2. 객체 수준에서의 생각이 아닌 패턴 수준에서 생각할 수 있기에 아키텍쳐를 생각하는 수준이 올라간다

 

 디자인 도구상자 안에 들어가야 할 도구들  

1. 객체지향의 기초

  • 캡슐화
  • 상속
  • 추상화
  • 다형성

2. 객체지향 원칙

  • 바뀌는 부분은 캡슐화 한다
  • 상속보다는 구성을 활용한다
  • 구현보다는 인터페이스에 맞춰서 프로그래밍한다
  • 상호작용하는 객체 사이에서는 가능하면 느슨한 결합을 사용한다. => 유연하고 변화에 강하다
  • 클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다 => OCP (개방 폐쇄의 원칙)
  • 추상화 된 것에 의존하게 만들고구상 클래스에 의존하지 않게 만든다 => 가능하면 모든 것을 추상화하라
  • 최소 결합을 해야한다
  • 슈퍼클래스에서 모든 것을 불러서 써야한다
  • 어떤 클래스가 바뀌는 이유는 하나 뿐이어야 한다 => SRP (단일 책임의 원칙)

3. 디자인 패턴

  • 전략 패턴 (Adapter Pattern)
  • 옵저버 패턴 (Observer Pattern)
  • 데코레이터 패턴  (Decorator Pattern)
  • 팩토리 패턴 (Factory Pattern)
  • 싱글턴 패턴 (Singleton Pattern)
  • 커맨드 패턴 (Command Pattern)
  • 어댑터 패턴과 퍼사드 패턴 (Adaptor Pattern & Fecade Pattern)
  • 템플릿 메소드 패턴 (Template Method Pattern)
  • 반복자 패턴과 컴포지트 패턴 (Iterator Pattern & Composit Pattern)
  • 상태 패턴 (State Pattern)
  • 프록시 패턴 (Proxy Pattern)
  • 복합 패턴 (Composit Pattern)
  • 실전 디자인 패턴
  • 기타 패턴

 

 

참고

헤드퍼스트 디자인패턴