TIL 221113 [Design Pattern]

강지훈·2022년 11월 13일
0

Design Pattern
일종의 설계 기법이며, 설계 방법이다.
SW 재사용성, 호환성, 유지보수성을 보장

디자인 패턴은 아이이디어이며 특정한 구현이아님

원칙: SOLID
1. 하나의 클래스는 하나의 역할
2. 확장(상속)에는 열려있고 수정에는 닫혀 있어야함
3. 자식이 부모의 자리에 항상 교체될 수 있어야함
4. 인터페이스가 잘 분리되어서, 클래스가 꼭 필요한 인터페이스만 구현
5. 상위 모듈이 하위 모듈에 의존하면 안됨

  1. #생성패턴: 객체의 생성 방식 결정
    예) DBConnection을 관리하는 Instance를 하나만 만들 수 있도록 제한하여, 불필요한 연결을 막음.

  2. #구조 패턴 (Structural) : 객체간의 관계를 조직
    예) 2개의 인터페이스가 서로 호환이 되지 않을 때, 둘을 연결해주기 위해서 새로운 클래스를 만들어서 연결시킬 수 있도록 함.

  3. #행위 패턴 (Behavioral): 객체의 행위를 조직, 관리, 연합
    예) 하위 클래스에서 구현해야 하는 함수 및 알고리즘들을 미리 선언하여, 상속시 이를 필수로 구현하도록 함.

어댑터 패턴(Adapter Patter)
사용 방법: 상속
호환되지 않은 인터페이스를 사용하는 클라이언트 그대로 활용 가능
향후 인터페이스가 바뀌더라도, 변경 내역은 어댑터에 캡슐화 되므로 클라이언트 바뀔 필요 x

싱글톤 패턴: 하나의 인스턴스만 생성하여 사용하는 디자인패턴

템플릿 메소드 패턴
로직을 단계 별로 나눠야 하는 상황에서 적용
단계별로 나눈 로직들이 앞으로 수정될 가능성이 있을 경우 더 효율적이다.

팩토리 메소드 패턴
객체를 만드는 부분을 Sub class에 맡기는 패턴

옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고,
자동으로 정보가 갱신되는 1:N 관계 (혹은 1대1)를 정의한다.

스트레이티지 패턴
새로운 로직을 추가하거나 변경할 때, 한번에 효율적으로 변경이 가능하다.

컴포지트 패턴
compositie pattern의 사용 목적은 object의 hierarchies를 표현하고 각각의 object를 독립적으로 동일한 인터페이스를 통해 처리할 수 있게한다.

profile
never stop

0개의 댓글