컴퓨터과학54 [디자인패턴] 데코레이터 패턴 (Decorator Pattern) 목적 객체에 추가적인 책임을 동적으로 부여함 상속을 사용하지 않고 새로운 기능을 추가 데코레이터는 상속을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 함 서브클래스를 만들지 않고 기능을 유연하게 확장하는 방법 제공 요소 문제: 조금씩 다른 다양한 종류 -> 늘어날수록 확장 어려움 해결: 상속을 남용하지 않고 연관으로 필요한 기능 추가 결과: 확장성 정의 여기서 상속은 기능을 물려받기 위해서가 아니라 형식을 맞추기 위해서임 Component: 각 구성요소는 직접 쓰일 수도 있고 데코레이터로 감싸져서 쓰일 수도 있음, 추상클래스 또는 인터페이스로 구현 ConcreteComponent: 새로운 행동을 동적으로 추가 Decorator: 자신이 장식할 구성요소(Component)와 같은 인터페이스 .. 2021. 10. 14. [디자인패턴] 옵저버 패턴 (Observer Pattern) 목적 객체간 1:N 의존 관계를 정의함 한 개 객체 상태가 변경될 때, 그 객체와 의존 관계에 있는 모든 객체들이 자동으로 알림을 받고 상태를 갱신 대표적으로 채팅방, 구독 서비스가 옵저버 패턴을 이용함 방주인, 발행자는 Subject (또는 Observerable, Publisher) - subject에게 정보를 push함 참여자, 구독자는 Observer (또는 Subscriber) 패턴 요소 문제: 1:N 관계에서 정보 갱신 - 구독자가 계속 loop를 돌며 업데이트가 있는지 확인할 수 없음 해결: 사용자를 등록하고, 정보가 변동하는 경우 알려주고 값을 자동으로 갱신 결과: loose coupling (구독자가 모든 정보를 아는게 아님), 확장성 (observer를 쉽게 추가/제거 가능) 구성 su.. 2021. 10. 13. [디자인패턴] 스트래티지 패턴 (Strategy Pattern) 목적 같은 종류의 작업을 하는 알고리즘을 정의, 각 알고리즘을 캡슐화 알고리즘들을 서로 바꿔 사용할 수 있도록 함 스트래티지 패턴은 알고리즘을 사용하는 클라이언트로 부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 함 요약 문제: 알고리즘의 다른 버전이 존재해서, 중복으로 존재하거나 if문을 이용해서 선택해야 함 -> OCP 위반 해결: 중복을 공통화시키고, 실행 시점에 맞는 알고리즘을 호출하도록 함 (상속 또는 인터페이스 활용) 결과: 수정할 경우 strategy를 추가하고, 나머지는 변경하지 않아도 됨. 구성 Context 클래스 캡슐화된 알고리즘을 멤버 변수로 포함 캡슐화된 알고리즘을 교환할 수 있음 Strategy 클래스 (인터페이스) 컴파일 시점에서 사용하는 캡슐화된 알고리즘을 나타냄 실제 .. 2021. 10. 13. SOLID 원칙 SOLID 원칙 좋은 객체지향 설계를 만들기 위한 기본 원칙들 SRP (단일 책임 원칙: Single Responsibility Principle) OCP (개방 폐쇄의 원칙: Open Close Principle) LSP (리스코프 치환 원칙: The Liskov Substitution Principle) ISP (인터페이스 분리의 원칙: Interface Segregation Principle) DIP (의존성 역전의 원칙: Dependency Inversion Principle) SRP 단일 책임 원칙 하나의 클래스가 하나의 기능만 가지고 있도록 설계 - 독립성 '하나의 변경 이유' 만을 갖도록 설계 "The Audience"(해당 클래스를 사용하려는 무언가) 찾기 가장 기본적이지만 가장 직접 구현.. 2021. 6. 13. 이전 1 2 3 4 5 6 7 8 ··· 14 다음