본문 바로가기

디자인패턴11

[Design Pattern] 데코레이터 패턴(Decorator Pattern)에 대해 알아보자 Definition 데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. - Structural Pattern Situation - 객체 책임과 행동이 동적으로 수정 가능해야 할때 - 수정을 위한 서브클래싱은 비실용적이거나 불가능할 때 - 구체적인 구현을 둘러싼 많은 객체가 허용될 때 - 객체를 사용하는 코드를 손상시키지 않고 런타임에 객체에 추가 동작을 할당할 수 있어야 하는 경우 - 상속을 사용하여 객체의 동작을 확장하는 것이 어색하거나 불가능 할 때 - Coffee 샵 예제에서 커피에 추가 옵션이 있을 때, whip, 샷 추가, 모카 추가 등등의 전체 가격, 어떤 순서로.. 2022. 6. 23.
[Design Pattern] 옵저버 패턴(Observer Pattern)에 대해 알아보자 Definition Observer Pattern은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. - Behavioral Pattern Situation - 다른 객체의 상태가 변경될 때마다 어떤 이벤트를 실행하고 싶을 때 - 한 객체의 상태가 변경되면 다른 객체도 변경해야 할 수 있고 실제 객체 집합을 미리 알 수 없거나 동적으로 변경되는 경우 - 앱의 일부 객체가 다른 객체를 제한된 시간 동안 또는 특정 경우 관찰해야 할 때 - 통신에는 느슨한 결합이 필요함 - 하나 이상의 객체의 상태 변경은 다른 객체의 동작을 트리거해야 함 - 방송 기능이 필요할 때 - MVC 패턴에서 사용됨 [ViewCo.. 2022. 6. 21.
[Design Pattern] 전략 패턴(Strategy Pattern)에 대해 알아보자 Definition 전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. Situation - 관련되있는 많은 클래스들 사이에 다른 점은 오직 behavior 뿐일 때 - 알고리즘의 여러 버전 또는 변형이 필요할 때 - 알고리즘은 호출 코드가 노출되어서는 안 되는 데이터에 액세스 하거나 데이터를 활용할 때 - 클래스의 동작은 런타임에 정의되어야 함 - 클래스에 동일한 알고리즘의 다른 변형 간에 전환하는 대규모 조건문이 있는 경우 Structure Pros - 요구사항이 변경되었을 때 조건문을 추가하는 등 기존의 코드를 변경하지 않고 새로운 전략에 대해 새로운 클래스로 관리하기 .. 2022. 6. 20.
300x250