python 디자인 모델 의 공장 모델
3597 단어 python 기초 지식python디자인 모드
간단 한 이해: 공장 모델 은 여전히 창설 형 디자인 모델 이다. 공장 으로서 제품 의 생산, 즉 대상 의 창설 에 관심 을 가진다. 우 리 는 공장 을 이용 하여 대상 을 창설 할 필요 가 없다. 우리 가 직접 대상 을 창설 할 필요 가 없다. 우 리 는 어떻게 대상 을 창설 하 는 지 이해 할 필요 가 없다. 공장 에 요구 만 하면 공장 이 당신 의 요구 에 따라당신 이 원 하 는 제품 을 생산 하고 그 에 상응하는 대상 을 주 는 모델 을 공장 모델 이 라 고 합 니 다.
공장 모델 장점:
1. 단순 공장 모델
class Apple:
def eat(self):
print("eat apple")
class Banana:
def eat(self):
print("eat banana")
class FruitFactory:
def create_fruit(self, name):
if name == "apple":
return Apple()
elif name == "banana":
return Banana()
if __name__ == '__main__':
f = FruitFactory()
apple = f.create_fruit("apple")
banana = f.create_fruit("banana")
apple.eat()
banana.eat()
설명: 먼저 사과 와 바나나 두 가 지 를 만 들 고 eat 방법 을 포함 한 과일 공장 류 를 만 들 고 create 가 있 습 니 다.fruit 방법, name 인 자 를 받 고 name 에 따라 최종 적 으로 어떤 대상 이 생 성 되 는 지 판단 합 니 다.
하지만 이런 방식 은 여러 가지 과일 이 필요 하 다 면 create 를 수정 해 야 한 다 는 단점 이 있다.fruit 의 내용, 판단 조건 증가.
2. 공장 방법 모델
import abc
class Apple:
def eat(self):
print("eat apple")
class Banana:
def eat(self):
print("eat banana")
class Pear:
def eat(self):
print("eat pear")
class Factory():
__meteclass__ = abc.ABCMeta
@abc.abstractmethod
def create_fruit(self):
pass
class AppleFactory(Factory):
def create_fruit(self):
return Apple()
class BananaFactory(Factory):
def create_fruit(self):
return Banana()
class PearFactory(Factory):
def create_fruit(self):
return Pear()
if __name__ == '__main__':
apple = AppleFactory().create_fruit()
banana = BananaFactory().create_fruit()
pear = PearFactory().create_fruit()
apple.eat()
banana.eat()
pear.eat()
설명: 이 모델 에 새로운 과일 이 나 오 면 하위 클래스 계승 공장 추상 류 를 한 번 더 쓰 고 하위 클래스 를 사용 하여 해당 하 는 인 스 턴 스 를 얻 을 수 있 습 니 다.
이런 모델 은 원래 의 과일 류 에 껍질 을 씌 운 셈 이다. 개인 적 으로 이런 방식 의 장점 이 뚜렷 하지 않 거나 자신 이 이해 하지 못 했다 고 생각한다.유일 하 게 생각 나 는 것 은 과일 이름 을 수정 해 야 한다 면 두 곳 만 수정 하면 된다 는 것 이다.
3. 추상 적 인 공장 모델
새로운 수요 가 있다 면 노란색 과 녹색 과일 을 생산 하고 싶 습 니 다.
import abc
class GreenApple:
def eat(self):
print("eat green_apple")
class YellowApple:
def eat(self):
print("eat yellow_apple")
class GreenBanana:
def eat(self):
print("eat green_banana")
class YellowBanana:
def eat(self):
print("eat yellow_banana")
class Factory():
__meteclass__ = abc.ABCMeta
@abc.abstractmethod
def create_green_fruit(self):
pass
@abc.abstractmethod
def create_yellow_fruit(self):
pass
class AppleFactory(Factory):
def create_green_fruit(self):
return GreenApple()
def create_yellow_fruit(self):
return YellowApple()
class BananaFactory(Factory):
def create_green_fruit(self):
return GreenBanana()
def create_yellow_fruit(self):
return YellowBanana()
if __name__ == '__main__':
apple = AppleFactory().create_green_fruit()
banana = BananaFactory().create_yellow_fruit()
apple.eat()
banana.eat()
참고 글:https://www.cnblogs.com/sfencs-hcy/p/10029960.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 디자인 모델 의 공장 모델우 리 는 공장 을 이용 하여 대상 을 창설 할 필요 가 없다. 공장 에 요구 만 하면 공장 이 당신 의 요구 에 따라당신 이 원 하 는 제품 을 생산 하고 그 에 상응하는 대상 을 주 는 모델 을 공장 모델 이 라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.