다양한 디자인 패턴 in 클린 소프트웨어

zwundzwzig·2023년 4월 20일
0

OOP

목록 보기
2/3

COMMAND PATTERN

커맨드 패턴은 대부분의 클래스와 달리 메서드를 캡슐화하여 의존성을 느슨하게 하고, 필요할 때마다 구현받는 객체들에게 명령하는 방식으로 재사용성을 극대화한다.

GoF의 디자인 패턴의 분류 중 'Behavioral Pattern'에 속하는 개념이고 이 책에선 '이벤트 주도적'인 패턴이라고 설명한다.

커맨드 패턴은 특히 트랜젝션에 적합한 패턴이다. 또한 커맨드 패턴의 응용인 '액티브 오브젝트 패턴'으로 다중 제어 스레드 구현, 즉 멀티태스킹을 사용할 수 있는 대표적인 방법이다.

커맨드 패턴은 함수를 클래스보다 강조하기에 객체 지향 패러다임을 망가뜨린다고 볼 수 있지만, 커맨드 클래스를 분리시킬 수 있기에 SRP를 지킬 수 있고, 기존 클라이언트 코드를 손상하지 않으며 새 커맨드들을 도입할 수 있어 OCP 역시 지킬 수 있다.

TEMPLETE METHOD PATTERN & STRATEGY

템플릿 메서드 패턴은 상속과 오버라이드를 활용한 디자인 패턴이다. 객체 지향 프로그래밍에서 고전적인 재사용 형태이다. 비슷한 알고리즘을 포함하는 여러 클래스가 있을 때 사용하면 좋을 거 같다.

대신 스트레터지 패턴을 사용하면 좋다. 중복되는 로직들을 갖는 객체를 구현하고, 이 객체를 주입받아 중복 로직을 호출하는 방식으로 재사용하는 방식으로, DIP 원칙을 지킬 수 있다. 그래서 상속과는 독립적으로 알고리즘을 실행할 수 있다.

FACADE PATTERN & MEDIATOR PATTERN

둘 다 특정 전략을 다른 객체들의 그룹에 부과하는 방식이다. 다만 퍼사드는 강제적이며 위로부터 적용하고, 미디에이터는 비가시적이며 아래로부터 적용한다.

SINGLETON PATTERN & MONOSTATE PATTERN

클래스가 단 하나의 인스턴스만 갖으며 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 디자인 패턴이다.

즉, 인스턴스 생성을 제어하기 위해 private, static 등의 수정자를 사용한다.

싱글톤은 경제적인 호환성과 파생에 장점이 있고 단일성 구조를 강제한다.

모노스테이츠 패턴은 단일성을 위한 또 다른 방법이다. 싱글톤과 달리 구조적 제약을 부여하지 않고도 단일성 있는 행위를 강제한다. 객체의 모든 변수를 정적으로 만드는 것이다.

모노스테이츠 역시 파생과 다형성에 강점이 있다.

NULL OBJECT PATTERN

그렇다. 가장 어려울 NULL 객체를 다루는 패턴이다. null 검사의 필요를 제거하고, 코드를 단순화하는 데 도움이 된다.

if문에 null을 넣는 체크 코드도 좋지만 아무것도 하지 않는 메서드를 활용해 항상 유효한 객체의 반환을 보장할 수 있다.

🧷 참조 교재

profile
개발이란?

0개의 댓글