Python设计模式(一)【抽象工厂模式】

python面向对象编程入门,我们需要不断学习进步



"""抽象工厂模式的实现"""

import random


class PetShop:

    """宠物商店"""

    def __init__(self, animal_factory=None):

        """宠物工厂是我们的抽象工厂。我们可以随意设置。""" 
        self.pet_factory = animal_factory

    def show_pet(self):

        """使用抽象工厂创建并显示一个宠物"""

        pet = self.pet_factory.get_pet()
        print("我们有一个可爱的 {}".format(pet))
        print("它说 {}".format(pet.speak()))
        print("我们还有 {}".format(self.pet_factory.get_food()))


# 工厂生产的事物

class Dog:

    def speak(self):
        return "汪"

    def __str__(self):
        return "Dog"


class Cat:

    def speak(self):
        return "喵"

    def __str__(self):
        return "Cat"


# Factory classes

class DogFactory:

    def get_pet(self):
        return Dog()

    def get_food(self):
        return "狗食"


class CatFactory:

    def get_pet(self):
        return Cat()

    def get_food(self):
        return "猫粮"


# 随机创建合适的工厂
def get_factory():
    """让我们动起来!"""
    return random.choice([DogFactory, CatFactory])()


# 多个工厂显示宠物
if __name__ == "__main__":
    for i in range(4):
        shop = PetShop(get_factory())
        shop.show_pet()
        print("=" * 20)

结果如图:

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值