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 추상 공장 모델 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기