avatar

刘刚刚的blog

每一次迭代都让我们更接近最优

  • 首页
  • python
  • 大模型应用
  • 软件/工具导航页
  • 关于
主页 HeadFirst 设计模式--工厂模式
文章

HeadFirst 设计模式--工厂模式

发表于 2022-11-8 更新于 2024-09- 27
作者 Administrator
3~4 分钟 阅读

当想让将实例化具体类的代码从具体的类中解耦时使用


示例

书中通过pizza分店的例子,介绍了工厂模式的使用。在pizza店中,每个店披萨的风味都不同.

与简单工厂不同的是:

工厂模式定义了一个类的接口(PizzaStore),但由创建者(NYPizzaStore)决定要实例化的类是那一个(披萨类的实现).

在例子中:NYPizzaStore可以实例化任何Pizza子类的实例

from abc import abstractmethod, ABCMeta


class Pizza(ABCMeta):
    name = None
    dough = None
    sauce = None
    topping = []

    def prepare(self):
        print("准备" + self.name)
        print("添加面团")
        print("添加佐料")
        print("添加其他材料:")
        for i in self.topping:
            print(i)

    def bake(self):
        print("300度,烘烤25分钟")

    def cut(self):
        print("斜着切3次")

    def box(self):
        print("包装")


class NYStyleCheesePizza(Pizza):

    def __init__(self):
        self.name = "芝士披萨"
        self.dough = "薄饼"
        self.sauce = "...."
        self.topping.add("...")


class PizzaStore(ABCMeta):

    def order_pizza(self, pizza_type):
        pizza = self.create_pizza(pizza_type)
        pizza.prepare()
        pizza.bake()
        pizza.cut()
        pizza.box()
        return pizza

    @abstractmethod
    def createPizza(self, pizza_type):
        pass


class NYPizzaStore(Pizza):

    def create_pizza(self, pizza_type):
        if pizza_type == "cheese":
            res = NYStyleCheesePizza()

        return res

Head First设计模式
设计模式
许可协议:  CC BY 4.0 123
分享

相关文章

12月 29, 2022

HeadFirst 设计模式--命令模式

命令模式通过封装调用把方法封装起来。

12月 18, 2022

HeadFirst 设计模式--外观模式(Facade Pattern)

外观模式将一个或者数个类复杂的一切都隐藏在背后,只露出一个干净的外观

12月 14, 2022

HeadFirst 设计模式--适配器模式(Adapter Design Pattern)

适配器模式将一个接口转化为另外一个接口。

下一篇

HeadFirst 设计模式--单例模式

上一篇

HeadFirst 设计模式--抽象工厂

最近更新

  • linux效率软件
  • 个人在vibe coding中的常用提示词梳理
  • Conda cpu占用100%的排查
  • Python工程中的一些工具
  • go中的包管理

热门标签

Halo agent vibe coding 运维 postgresql 设计模式 linux就该这么学 nas rag odoo

目录

©2026 刘刚刚的blog. 保留部分权利。

使用 Halo 主题 Chirpy