Head First Design Patterns (1~5) WIP

Kay·2021년 5월 5일
0

객체 지향의 기초

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

객체지향 원칙

  • 바뀌는 부분은 캡슐화 한다.
  • 상속보다는 구성을 활용한다.
  • 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
  • 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
  • 클래스는 확장에 대해서는 열려 있지만, 변경에 대해서는 닫혀 있어야 한다. (OCP)
  • 추상화된 것에 의존하고, 구상 클래스에 의존하지 않는 것이 좋다.

스트래티지 패턴

알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다.
스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

옵저버 패턴

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

데코레이터 패턴

객체에 추가 요소를 동적으로 더할 수 있다.
데코레이터를 사용하면 서브클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있다.

팩토리 패턴

팩토리 메소드 패턴

객체를 생성하기 위한 인터페이스를 만든다.
어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하도록 한다.
팩토리 메소드를 이용하면 인스턴스를 만드는 일을 서브클래스로 미룰 수 있다.

추상 팩토리 패턴

서로 연관된, 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공한다.
구상 클래스는 서브 클래스에 의해 만들어진다.

싱글턴 패턴

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

profile
new blog✨ https://kay-log.tistory.com/

0개의 댓글