Python 단순 공장 모델 과 공장 방법 모델 의 장단 점 분석

머리말
라 는 책 에서 공장 모델 은 다음 과 같이 언급 했다.
공장 방법 모델(공장 방법)추상 공장 모델(Abstract Factory)그러나 실제 과정 에서 또 하나의 공장 모델 이 자주 사용 되 는데 그것 이 바로 간단 한 공장 모델(Simple Factory)이다.흔히 볼 수 있 는 분류 방법 이 있다.제품 이 구체 적 인 제품 인지 구체 적 인 공장 인지 에 따라 공장 방법 모델 과 간단 한 공장 모델 로 나 눌 수 있다.공장 의 추상 정도 에 따라 공장 방법 모델 과 추상 공장 모델 로 나 눌 수 있다.다음은 예 를 들 어 간단 한 공장 모델 과 공장 방법 모델 을 비교 할 것 이다.
공장 의도
대상 을 만 드 는 데 사용 할 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 합 니 다.Factory Method 는 클래스 의 실례 화 를 하위 클래스 로 지연 시 킵 니 다.
별명
허구 작성 기(Virtual Constructor)
케이스
제1 단계
이 군 은 한 세대 의 공장 을 열 어 각 대기업 의 휴대 전 화 를 생산 하 는 것 을 도 왔 다.처음에 샤 오미 만 샤 오미 휴대 전화(MiPhone)를 생산 하 라 고 했 는데 나중에 품질 이 너무 좋 고 명성 이 널리 퍼 졌 다.애플 도 찾 아와 서 그 에 게 아이 폰 을 생산 하 게 하려 고 했다.장사 가 시작 되 었 다.샤 오 이 군 은 손 을 흔 들 어 몇 달 동안 일 을 멈 추고 생산 라인 을 추가 하여 아이 폰(Iphone)을 전문 적 으로 생 성 했다.그래서 지금 은 한 공장 에 두 개의 생산 라인 이 있다.
1 단계 UML 그림
UML 그림 을 통 해 공장 의 현재 모습 을 직관 적 으로 알 아 보 자.

1 단계 코드
코드 를 통 해 이 논 리 를 실현 하 다.

from abc import ABC, abstractmethod

#   
class Phone(ABC):
 
 @abstractmethod
 def make(self):
 pass

#     
class Apple(Phone):
 
 def make(self):
 print("make apple")

#     
class XiaoMi(Phone):
 
 def make(self):
 print("make xiaomi")


class Factory:

 def product_phone(self, mobile_type):
 if mobile_type == 'apple':
  return Apple()
 else:
  return XiaoMi()


if __name__ == '__main__':
 factory = Factory()
 factory.product_phone('apple').make()
 factory.product_phone('xiaomi').make()
실행 결 과 를 보십시오.
make apple
make xiaomi
단계
첫 번 째 단계 의 주문 이 완 료 됨 에 따라 현재 점점 더 많은 휴대 전화 제조 업 체 들 이 샤 오리 에 게 휴대 전 화 를 생산 하 러 왔 다.문제 가 생 겼 다.생산 라인 의 개 조 는 전체 공장 의 작업 중단 시간 을 초래 하고 매번 의 작업 중단 은 공장 에 커 다란 손실 이다.그렇다면 문 제 는 어떻게 해결 해 야 할 까?공장 하나 로 는 부족 한 것 같은 데 어떻게 해결 해 야 하나 요?모든 생산 라인 을 단독 공장 으로 독립 시 키 면 새로운 휴대 전 화 를 생산 해 야 한다.새로운 공장 만 새로 늘 리 면 된다.다른 휴대 전화 생산 에 영향 을 주지 않 는 다.
2 단계 UML 그림
마찬가지 로 UML 그림 을 통 해 이 단계 공장 의 모습 을 알 아 보 자.

2 단계 코드
마찬가지 로 코드 를 빌려 이 단계 의 논 리 를 실현 합 시다.

from abc import ABC, abstractmethod

#     
class AbastractFactory(ABC):
 
 @abstractmethod
 def product_phone(self):
 pass

#     
class AppleFactory(AbastractFactory):
 
 def product_phone(self):
 return Apple().make()

#     
class XiaomiFactory(AbastractFactory):
 
 def product_phone(self):
 return XiaoMi().make()
 

#    
class Phone(ABC):
 	
 @abstractmethod
 def make(self):
 pass

#      
class Apple(Phone):
 
 def make(self):
 print("make apple")

#      
class XiaoMi(Phone):
 
 def make(self):
 print("make xiaomi")

def client_product(factory:AbastractFactory):
 return factory

if __name__ == '__main__':
 xiaomi = client_product(XiaomiFactory())
 xiaomi.product_phone()
 apple = client_product(AppleFactory())
 apple.product_phone()
실행 결 과 를 보십시오.
make xiaomi
make apple
총결산
위의 사례 중의 두 단 계 는 각각 두 가지 디자인 모델 에 대응 하 는데 그것 이 바로**간단 한 공장 모델**와 공장 방법 모델 이다.사례 와 대 비 를 통 해 우 리 는 그들의 장단 점 을 발견 하기 어렵 지 않다.
단순 공장 모델 장단 점
4.567917.장점:클 라 이언 트 와 제품 의 생 성 이 분리 되 고 클 라 이언 트 는 제품 이 만 든 논 리 를 알 필요 가 없 으 며 이 제품 만 소비 하면 된다4.567917.단점:공장 류 는 모든 제품 의 설립 논 리 를 통합 시 켰 고 공장 류 에 문제 가 발생 하면 모든 제품 에 문제 가 발생 할 수 있다.그리고 새로 제품 을 늘 리 면 공장 류 를 수정 하여 개폐 원칙 에 위배 된다.
공장 방법 모델 장단 점
4.567917.장점:개폐 원칙 에 더욱 부합 되 고 하나의 제품 류 를 추가 하면 다른 구체 적 인 제품 류 와 구체 적 인 공장 류 만 실현 하면 된다.단일 직책 원칙 에 부합 되 고 각 공장 은 해당 하 는 제품 만 생산 한다4.567917.단점:한 제품 을 추가 하려 면 해당 하 는 구체 적 인 공장 류 와 구체 적 인 제품 류 를 실현 해 야 한다.각 제품 은 대응 하 는 구체 적 인 공장 과 구체 적 인 제품 류 가 있어 야 한다이상 은 Python 간단 한 공장 모델 과 공장 방법 모델 의 장단 점 을 분석 하 는 상세 한 내용 입 니 다.Python 공장 모델 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기