Python 추상 공장 모델 의 장단 점 분석
4.567915.계속 핸드폰 이 출하 되 려 면 핸드폰 하나만 으로 는 안 되 고 포장 박스,충전기 등 도 필요 하 다.우리 가 전편 에서 언급 한 공장 모델 에 따라 새로운 공장 을 세 우 는 것 은 조금도 문제 가 없다.그러나 이렇게 하면 가 져 올 문 제 를 생각해 보 자.분명히 공장 이 너무 많아 서 포장 박스,충전 기 를 모두 각 공장 에 분산 시 키 고 조립 하 는 것 도 큰 문제 이다.그러면 더 좋 은 방법 이 있 을 까?답 은 긍정 적 이 고 추상 적 인 공장 모델 이다.
추상 적 공장 의도
일련의 관련 되 거나 서로 의존 하 는 대상 을 만 드 는 인 터 페 이 스 를 제공 합 니 다.구체 적 인 피 로 를 만 들 필요 가 없습니다.
별명
Kit
케이스
단계
휴대 전화 만 생산 하 는 것 으로 는 턱 없 이 부족 하고 다른 부품 도 생산 해 야 한다.새로운 공장 에 분산 되 는 원가 가 너무 높 고 유지 에 도 불리 하 다.그러면 한 유형의 휴대 전화 에 필요 한 모든 것 을 한 공장 에 두 고 완성 해 야 한다.샤 오미 공장 은 샤 오미 휴대 전화 와 샤 오미 휴대 전화 세트 를 생산 하고 아이 폰 은 아이 폰 과 아이 폰 세트 를 생산 한다.고객 은 어떤 휴대 전 화 를 원 하 는 지 에 만 관심 을 가지 면 된다.
3 단계 UML 그림
UML 그림 을 통 해 이때 공장 의 모습 을 직관 적 으로 알 아 보도 록 하 겠 습 니 다.
단계 코드
코드 를 통 해 이 논 리 를 실현 하 다.
from abc import ABC, abstractmethod
#
class AbstractMobile(ABC):
@abstractmethod
def make(self):
pass
class XiaoMiMobile(AbstractMobile):
def make(self):
print("make xiaomi mobile")
class AppleMobile(AbstractMobile):
def make(self):
print("make apple mobile")
#
class AbstractOthers(ABC):
@abstractmethod
def make(self):
pass
class XiaoMiOthers(AbstractMobile):
def make(self):
print("make xiaomi others")
class AppleOthers(AbstractMobile):
def make(self):
print("make apple others")
#
class AbstractFactory(ABC):
@abstractmethod
def create_mobile(self) -> AbstractMobile:
pass
@abstractmethod
def create_others(self) -> AbstractOthers:
pass
class XiaoMiFactory(AbstractFactory):
def create_mobile(self) -> XiaoMiMobile:
return XiaoMiMobile().make()
def create_others(self) -> XiaoMiOthers:
return XiaoMiOthers().make()
class AppleFactory(AbstractFactory):
def create_mobile(self) -> AppleMobile:
return AppleMobile().make()
def create_others(self) -> AppleOthers:
return AppleOthers().make()
def client(factory: AbstractFactory) -> None:
product_mobile = factory.create_mobile()
product_others = factory.create_others()
if __name__ == "__main__":
client(XiaoMiFactory())
client(AppleFactory())
실행 결 과 를 보십시오.make xiaomi mobile
make xiaomi others
make apple mobile
make apple others
총결산
만약 에 코드 가 여러 시리즈 의 관련 제품 과 상호작용 을 해 야 하지만 관련 정 보 를 미리 얻 지 못 하거나 미래 확장 성에 대한 고려 에서 코드 가 제품 의 구체 적 인 유형 을 바탕 으로 구축 하 는 것 을 원 하지 않 는 다.이런 상황 에서 추상 적 인 공장 을 사용 할 수 있다.
잘 설 계 된 프로그램 에서 각 종 류 는 한 가지 일 만 책임 진다.만약 에 한 가지 유형 이 여러 가지 유형의 제품 과 상호작용 을 한다 면 공장 방법 을 독립 된 공장 류 나 완전한 기능 을 가 진 추상 적 인 공장 류 에 추출 하 는 것 을 고려 할 수 있다.
추상 공장 의 장단 점
장점.
4.567917.같은 공장 에서 생 성 된 제품 이 서로 일치 하도록 확보 할 수 있 습 니 다클 라 이언 트 와 구체 적 인 제품 코드 의 결합 을 피 할 수 있 습 니 다단일 직책 원칙.코드 를 쉽게 유지 할 수 있 도록 제품 생 성 코드 를 같은 위치 로 추출 할 수 있 습 니 다개폐 원칙.응용 프로그램 에 신제품 변 체 를 도입 할 때 클 라 이언 트 코드 를 수정 할 필요 가 없습니다.
결점.
4.567917.이 모델 을 사용 하려 면 응용 에 많은 인터페이스 와 유형 을 도입 해 야 하기 때문에 코드 는 이전 보다 더욱 복잡 할 수 있다.즉,제품 족 확장 이 매우 어렵다이상 은 Python 추상 공장 모델 의 장단 점 을 분석 하 는 상세 한 내용 입 니 다.Python 추상 공장 모델 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.