- Today
- Total
목록스터디 (246)
작심삼일
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 합니다. 구현이 인터페이스에 얽매이지 않게 됩니다. 구현 세부 사항을 사용자에게서 숨길 수 있습니다. 어떻게 쓰는가 Abstraction: 추상적 개념에 대한 인터페이스를 제공하고 객체 구현자에 대한 참조자를 관리합니다. RefinedAbstraction: 추상적 개념에 정의된 인터페이스를 확장합니다. Implementor: 구현 클래스에 대한 인터페이스를 제공합니다. ConcreteImplementor: Implementor 인터페이스를 구현하는 것으로 실제적인 구현 내용을 담았습니다. 어디서 ..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만듭니다. 어떻게 쓰는가 Subject: 감시자들을 알고 있는 주체. 감시자 객체를 붙이거나 떼는 데 필요한 인터페이스 제공 Observer: 주체에 생긴 변화에 관심 있는 객체를 갱신하는 데 필요한 인터페이스를 정의 ConcreteSubject: ConvreteObserver 객체에게 알려주어야 하는 상태를 저장. 상태가 변경될 때 감시자에게 알림 ConcreteObserver: ConcreteSubj..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 한 집합에 속해있는 객체의 상호작용을 캡슐화하는 객체를 정의합니다. 객체들이 직접 서로를 참조하지 않도록 하여 객체 사이의 소결합(loose coupling)을 촉진시키며, 개발자가 객체의 상호작용을 독립적으로 다양화시킬 수 있게 만듭니다. 어떻게 쓰는가 Mediator: Colleague 객체와 교류하는 데 필요한 인터페이스를 정의합니다. ConcreteMediator: Colleague 객체와 조화를 이뤄서 협력 행동을 구현하며, 자신이 맡을 동료(colleague)를 파악하고 관리합니다. Colleagues: 자신의 중재자 객체가 무엇인지 파악합니다. clas..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스(관리자)를 제공하는 패턴으로, 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의합니다. 사용자가 다루어야할 객체의 수가 줄어들며, 서브시스템을 쉽게 사용할 수 있다. 서브시스템과 사용자 코드 간의 결합도를 약하게 만든다. 어떻게 쓰는가 Facade: 단순하고 일관된 통합 인터페이스를 제공하며, 서브세스템을 구성하는 어떤 클래스가 어떤 요청을 처리해야 하는지 알고 있으며, 사용자의 요청을 해당 서브시스템 객체에 전달합니다. 서브시스템 클래스들: 서브시스템의 기능을 구현하고, Facade 객..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공할 수 있도록 합니다. 제품에 대한 내부 표현을 다양하게 변화할 수 있다. 생성과 표현에 필요한 코드를 분리한다. 복합 객체를 생성하는 절차를 좀더 세밀하게 나눌 수 있다. 어떻게 쓰는가 Builder: Product 객체의 일부 요소들을 생성하기 위한 추상적인 인터페이스를 정의 ConcreteBuilder: Builder 클래스에 정의된 인터페이스를 구현하며, 제품의 부품들을 모아 빌더를 복합 Director: Builde..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 캡슐화를 위배하지 않은 채 어떤 객체의 내부 상태를 잡아내고 실체화시켜 둠으로써, 이후 해당 객체가 그 상태로 되돌아올 수 있도록 합니다. 객체의 상태를 저장해둔 후 복원해야할 때 사용한다. 캡슐화된 경계를 유지할 수 있다. Originator 클래스가 많은 양의 정보를 저장해야 할 때나 상당히 자주 메멘토를 반환해야 할 때라면 상당한 오버헤드를 가져올 수 있다. 어떻게 쓰는가 Memento: 원조본 객체의 내부 상태를 저장합니다. Originator: 원조본 객체 Caretaker: 메멘토의 보관을 책임지는 보관자 class Memento: def __init__..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 요청 자체를 캡슐화하는 것입니다. 이를 통해 요청이 서로 다른 사용자를 매개변수로 만들고, 요청을 대기시키거나 로깅하며, 되돌릴 수 있는 연산을 지원합니다. 이미 구현된 기능을 사용하는 것이기 때문에 의존성이 없지만, 모든 기능을 구현해야한다는 단점이 있다. 어떻게 쓰는가 Command: 연산 수행에 필요한 인터페이스를 선언합니다. ConcreteCommand: Receiver 객체와 액션 간의 연결성을 정의합니다. Client: ConcreteCommand 객체를 생성하고 처리 객체로 정의합니다. Invoker: 명령어에 처리를 수행할 것을 요청합니다. Recei..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성합니다. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴입니다. 새로운 클래스가 추가돼도 일괄적인 접근 방법을 제공하기 때문에 연산, 관리가 쉽다. 하지만 단일 객체와 복합 객체의 설계를 일반화시키기 때문에 각각의 객체에 다른 연산을 적용하기 어렵다. 어떻게 쓰는가 Component(Graphic): 집합 관계에 정의될 모든 객체에 대한 인터페이스를 정의합니다. 모든 클래스에 해당하는 인터페이스에 대해서는 공통의 행동을 구현합니다. 전체 클래스에 속한 요소들을 관리하..