【大话设计模式】--工厂家族

在接触大话设计模式,我们最先了解的就是三个工厂家族:简单工厂,抽象工厂和工厂方法。下面就这三个工厂

行一些简单的学习和讲解。


简单工厂


简单工厂是用一个单独的类来创造实例的过程,通常创建的实例都拥有共同的父类。简单工厂模式中包含的角色

及其相应的职责如下:

工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。

抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所有实例所

共有的公共接口。

具体产品(ConcreteProduct)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父

类。

简单工厂的优点:工厂类中包含了必要的逻辑判断,相对客户端来说,去除了具体产品的依赖。是工厂家族中最

简单最基本 的。

简单工厂的缺点:违背了开放-封闭原则,一旦需求变化,程序的变动会很大!

简单工厂模式如图所示:
代码实现,推荐十期任焱的设计模式之简单工厂与工厂方法,里边有美食哦!

抽象工厂


抽象工厂模式是指当有多个抽象角色的时候使用一种工厂模式。它可以向客户端提供一个接口,使客户端

在不必制定产品的具体的情况下,创建多个产品对象。

所以抽象工厂的具体定义:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。
抽象工厂的优点(如图):
1、便于交互产品序列,使得变化更灵活
2、创建实例过程与客户端分离,使改动变得最小。




工厂方法模式 VS 简单工厂



先解释工厂方法的定义:工厂方法模式定义于一个用户创建对象的接口,让子类决定实例化哪一个类。工厂方法

使一个类的实例化延迟到 其子类。

前边不是说了吗?简单工厂不符合开放-封闭的原则,所以为了解决这一问题,工厂方法模式应运而生。那么工

厂方法模式是如何实现开放-封闭原则的呢?在工厂方法实现时,它把简单工厂的内部逻辑判断移到客户端代码实

现。所以,如果需求变化,只需改变客户端代码就OK了。

工厂方法模式结构如图所示:



三者联系


工厂模式就是将大量有共同的接口的类实例化,而且不必事先知道每次要实例化哪一个类的模式。它定义一个用

于创建对象的接口,有子类决定实例化哪一个类。工厂模式相当于创建实例对象的new,经常要根据类class生成实例

对象,如A a = new A()工厂模式也是用来创建实例对象的。



总结


学设计模式的时候一直不知道怎么总结,然后听了寒子的建议,看了看设计模式最后的总结汇总,总结了一点点

关系,才敢开始写总结,不然这个总结不知道什么时候才会出生呢!所以看书得宏观把控是必须的,总结也必须与进

度步伐一致!















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过一个工厂类来创建不同类型的对象,而无需暴露对象创建的逻辑给客户端。在Python中,简单工厂模式可以通过一个工厂类来创建不同的产品对象。下面是一个简单的示例: ```python class Product: def operation(self): pass class ConcreteProductA(Product): def operation(self): print("Performing operation A.") class ConcreteProductB(Product): def operation(self): print("Performing operation B.") class SimpleFactory: @staticmethod def create_product(product_type): if product_type == "A": return ConcreteProductA() elif product_type == "B": return ConcreteProductB() else: raise ValueError("Invalid product type.") # 使用简单工厂创建产品对象 factory = SimpleFactory() product_a = factory.create_product("A") product_a.operation() product_b = factory.create_product("B") product_b.operation() ``` 在上述示例中,`Product` 是一个抽象产品类,`ConcreteProductA` 和 `ConcreteProductB` 是具体产品类。`SimpleFactory` 是工厂类,通过 `create_product` 方法根据不同的产品类型创建相应的产品对象。 通过简单工厂模式,客户端无需知道具体的产品类,只需要通过工厂类来创建产品对象。这样可以降低客户端与具体产品类的耦合度,并且当需要新增产品时,只需要修改工厂类即可。 希望这个简单的示例能帮助你理解简单工厂模式在Python中的应用。如果有任何进一步的问题,请随时提问!
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值