avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • 大模型应用
  • 常用软件/工具
  • Halo
  • 关于
Home HeadFirst 设计模式--工厂模式
文章

HeadFirst 设计模式--工厂模式

Posted 2022-11-8 Updated 2024-09- 27
By Administrator
3~4 min read

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


示例

书中通过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设计模式
设计模式
License:  CC BY 4.0
Share

Further Reading

Dec 29, 2022

HeadFirst 设计模式--命令模式

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

Dec 18, 2022

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

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

Dec 14, 2022

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

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

OLDER

HeadFirst 设计模式--抽象工厂

NEWER

HeadFirst 设计模式--单例模式

Recently Updated

  • 文本切分-语义分割(Semantic Chunking)
  • dify 并发配置优化
  • Typing
  • 大模型返回中json_schema与json_mode的区别
  • Async

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy