[Design Pattern] 디자인 패턴

in·2023년 10월 7일
0

Design Pattern

목록 보기
1/8

📌 Design Pattern

일종의 설계 기법/설계 방법

목적

SW 재사용성, 호환성, 유지 보수성 보장

특징

프로젝트에 항상 적용해야 하는 것은 아니지만 추후 재사용, 호환, 유지 보수 시 발생하는 문제 해결을 예방하기 위해 만들어둔 패턴

📌 SOLID 원칙

객체지향 설계 원칙

SRP(Single Responsibility) 단일 책임 원칙

  • 클래스는 단 한 개의 책임(기능)을 가져야 함

  • 클래스를 변견하는 이유는 단 하나여야 함

OCP(Open-Closed) 개방-폐쇄 원칙

  • 확장(상속)에는 열려있고 변경에는 닫혀 있어야 함

  • 기존의 코드를 변경하지 않고 기능을 수정/추가할 수 있도록 설계해야 함
    ➡️ 추상화(인터페이스)와 상속(다형성)등을 통해 구현할 수 있음

LSP(Liskov Substitution) 리스코프 치환 원칙

  • 하위 타입 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야 함
    ➡️ 상위 타입 객체를 하위 타입 객체로 치환해도 정상적으로 동작해야 함

  • 상속 관계가 아닌 클래스들을 상속 관계로 설정하면 이 원칙에 위배

ISP(Interface Segregation) 인터페이스 분리 원칙

  • 클라이언트는 자신이 사용하는 메소드에만 의존해야 함

  • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 함

  • 인터페이스는 해당 인터페이스를 사용하는 클라이언트를 기준으로 잘게 분리되어야 함

DIP(Dependency Inversion) 의존 역전 원칙

  • 의존 관계를 맺을 때 변하기 쉬운 것(구체적인 것) 보다는 변하기 어려운 것(추상적인 것)에 의존해야 함

  • 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안됨

📌 분류

  1. 생성 패턴(Creation) : 객체의 생성 방식 결정
    Class-creation patterns, Object-creation patterns

    ex) DB Connection을 관리하는 Instance를 하나만 만들 수 있도록 제한하여 불필요한 연결을 막음

  2. 구조 패턴(Structural) : 객체간의 관계를 조직

    ex) 2개의 인터페이스가 서로 호환이 되지 않을 때 둘을 연결해주기 위해 새로운 클래스를 만들어서 연결시킬 수 있도록 함

  3. 행위 패턴(Behavioral) : 객체의 행위를 조직, 관리, 연합

    ex) 하위 클래스에서 구현해야 하는 함수 및 알고리즘들을 미리 선연하여 상속 시 이를 필수로 구현하도록 함

[참고 자료]

🔗링크
🔗링크

0개의 댓글