设计模式---工厂三兄弟

内容:

一、简单工厂模式:工厂中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。


理解:一个工厂中已经包含好多个小的工厂,客户端决定去生产什么,就去实例化哪个工厂去生产。


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


工厂方法模式使对象的创建和使用分离使得系统更加符合:“单一职责原则”有利于对功能的复用和系统的维护。

两个类中AB之间的关系应该仅仅是A创建B或是A使用B,而不能两种关系都有。


理解:抽象出来一个创建对象的工厂接口,具体的产品通过接口联通具体的生产工厂来生产相应的产品。


三、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,不用指明他们具体的类。


理解:抽象出一系列接口,具体工厂对应具体的产品,通过抽象产品接口和抽象工厂接口,将他们联通起来,从而更有利于扩展复用。

适用场景:

(1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是很重要的,用户无须关心对象的创建过程,将对象的创建和使用解耦。

(2)系统中有多于一个的产品族,而每次只使用其中某一产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加新的产品族。

(3)属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。同一个产品族中的产品可以是没有任何关系的对象,但是它们都具有一些共同的约束,如同一操作系统下的按钮和文本框,按钮与文本框之间没有直接关系,但它们都是属于某一操作系统的,此时具有一个共同的约束条件:操作系统的类型。

(4)产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构。


区别 :

(1)工厂方法模式针对的是一个产品等级结构(例如:一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。)

(2)抽象工厂模式需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值