[Python 디자인 모드] 01 - 단순 공장 모드
간단 한 공장 모델 은 정태 적 인 공장 방법 모델 이 라 고도 부 르 는데 공장 모델 가족 중에서 가장 간단 한 모델 이다.이 모델 의 기본 작업 방식: 한 공장 을 통 해 어떤 구체 적 인 제품 인 스 턴 스 를 만 들 지 결정 합 니 다.
다음은 간단 한 공장 실례 입 니 다.
def create_animal(name):
if name == 'dog':
return Dog()
elif name == 'cat':
return Cat()
animal = create_animal('dog')
animal.eat('some food')
4. 567914. 바로 한 공장 입 니 다. 각종 동물 은 제품 입 니 다. 이 공장 은 name 에 따라 어떤 동물 제품 을 생산 할 지 결정 합 니 다.제품 은 하나의 기본 적 인 특성 을 가 져 야 한다. 같은 공장 에서 생산 하 는 모든 제품 은 하나의 시리즈 이 고 똑 같은 기능 을 가 져 야 한다. 예 를 들 어 동물 이 모두 음식 을 먹는다.
간단 한 공장 모델 의 장점 은 제품 대상 의 세부 사항 을 실현 류 의 내부 에 밀봉 하고 한 제품 대상 의 구체 적 인 실현 을 바 꾸 면 다른 제품 에 영향 을 주지 않 는 다 는 것 이다.확장 성 이 강하 고 제품 유형 이 새로 추 가 될 때 해당 하 는 실현 류 를 추가 한 다음 에 공장 을 수정 하고 판단 가 지 를 추가 하면 됩 니 다.공장 함 수 를 수정 하 는 데 가 져 오 는 위험 이 비교적 낮다.
또 하나의 전형 적 인 간단 한 공장 모델 에 적합 한 예 는 계산기 이다. 계산 기 는 각종 계산 조작 을 지원 해 야 한다. 예 를 들 어 가, 감, 승, 제, 제곱, 입방, 제곱 근, 계단 등 이다.그러면 이곳 의 공장 은 각종 조작 알고리즘 대상 을 만 들 고 모든 조작 알고리즘 대상 은 값 을 구 하 는 방법 을 지원 합 니 다.
def create_operator(op):
if op == '+':
return AddOperation()
elif op == '-':
return SubOperation()
elif op == '*':
return MulOperation()
elif op == '/':
return DivOperation()
op = create_operator('+')
op.Calc(1, 2)
앞에서 언급 한 바 와 같이 모든 공장 에서 생산 하 는 제품 은 하나의 계열 이기 때문에 제품 류 는 보통 같은 추상 적 인 기류 에서 파생 되 지만 반드시 필요 한 것 은 아니다.
단순 공장 모델 의 구성 요소
1. 공장 함 수 는 구체 적 인 제품 대상 의 창설 작업 을 책임 지고 이 모델 의 핵심 이다.장면 이 비교적 복잡 할 때 공장 류 로 제품 의 건설 을 책임 져 야 할 수도 있다.
2. 제품 의 추상 적 인 인터페이스 또는 추상 적 인 모든 제품 의 공공 인터페이스
3. 구체 적 인 제품 유형 추상 인터페이스의 구체 적 인 실현 유형
결점.
1. 공장 류 는 모든 인 스 턴 스 의 생 성 논 리 를 집중 시 켰 기 때문에 높 은 내부 집적 책임 배분 원칙 을 위반 하고 모든 생 성 논 리 를 한 공장 류 에 집중 시 켰 다.
2. 그것 이 만 들 수 있 는 종 류 는 사전에 고려 할 수 밖 에 없다. 새로운 종 류 를 추가 하려 면 공장 류 를 바 꿔 야 한다.
3. 시스템 에서 구체 적 인 제품 류 가 계속 증가 할 때 공장 류 가 서로 다른 조건 에 따라 서로 다른 사례 를 만들어 야 한 다 는 수요 가 나타 날 수 있다. 이런 조건 에 대한 판단 과 구체 적 인 제품 유형 에 대한 판단 이 교차 되 어 모듈 기능 의 확산 을 피하 기 어렵 고 시스템 의 유지 와 확장 에 매우 불리 하 다.
필드 사용
1. 공장 류 가 설립 을 담당 하 는 대상 이 비교적 적다.
2. 고객 은 공장 류 에 들 어 오 는 매개 변수 만 알 고 대상 (논리) 을 어떻게 만 드 는 지 에 관심 이 없다.
3. 간단 한 공장 은 높 은 내부 집적 책임 배분 원칙 을 위반 하기 쉬 우 므 로 간단 한 상황 에서 만 사용 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.