Design Pattern 4

전략패턴

선행 개념 의존관계 객체와 객체 간 관계의 지속기간이 짧은 경우 특정 클래스 내부 메서드에서 인자로 특정 객체를 인자로 받을 때 위의 상황에서 객체의 지속 기간이 짧은 이유는 해당 메서드를 사용할 때 마다 필요한 객체를 사용하고 역할이 끝나면 객체를 사용한 객체와 연관성이 없기 때문 연관 관계 객체와 객체 간 관계의 지속기간이 긴 경우 특정 클래스의 생성자 메서드에서 인자로 특정 객체를 받을 때 위의 상황에서 객체의 지속 기간이 긴 이유는 생성자 메서드에서 해당 객체를 생성 후 해당 객체를 계속해서 가지고 있기 때문 전체 객체 다른 객체의 기능을 사용하는 객체 부분객체 전체 객체에게 사용되는 객체 집합 관계의 종류 집약 관계 한 객체가 다른 객체를 포함 할 때 부분객체를 포함한다 전체 객체의 라이프타임과..

Design Pattern 2023.07.24

옵저버 패턴

옵저버 패턴 구성 옵저버 패턴의 구성은 다음과 같다. 2개의 인터페이스 그리고 각각의 인터페이스를 구현한 구상클래스로 파악할 수 있다. 옵저버 인터페이스 주제 인터페이스 주제클래스 옵저버 클래스 주제 인터페이스(Subject Interface) 해당 인터페이스에서 최소한으로 가지고 있어야 할 변수와 메서드는 아래와 같다. 옵저버 명단부터 알아보자. 해당 배열에 들어가는 데이터 타입은 옵저버 객체이다. 옵저버 객체는 옵저버 인터페이스를 구현한 옵저버 객체를 의미한다. 해당 명단에 등록할 때에는 주제 인터페이스를 구현된 구상 클래스 주제 내 register 함수를 통해 옵저버 객체를 등록한다. 해당 명단에 옵저버 객체를 등록하는 이유는 notify 함수를 통해서 옵저버 객체 내부에 각각 구현된 update ..

Design Pattern 2023.07.24

추상 팩토리 패턴

추상팩토리 패턴 예제 추상팩토리는(animal_factory)는 Class 또는 method 그 자체를 받는다. 그리고 추상팩토리를 정의한 클래스 내 메서드 안에서 추상팩토리를 사용한다. import random class PetShop: def __init__(self, animal_factory=None): self.pet_factory = animal_factory def show_pet(self): pet = self.pet_factory() print("We have a lovely {}".format(pet)) print("It says {}".format(pet.speak())) class Dog: def speak(self): return "woof" def __str__(self): re..

Design Pattern 2023.06.09