本文主要是介绍【大话设计模式】--工厂家族,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在接触大话设计模式,我们最先了解的就是三个工厂家族:简单工厂,抽象工厂和工厂方法。下面就这三个工厂
进行一些简单的学习和讲解。
简单工厂
简单工厂是用一个单独的类来创造实例的过程,通常创建的实例都拥有共同的父类。简单工厂模式中包含的角色
及其相应的职责如下:
共有的公共接口。工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。
抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所有实例所
具体产品(ConcreteProduct)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父
类。
简单最基本 的。简单工厂的优点:工厂类中包含了必要的逻辑判断,相对客户端来说,去除了具体产品的依赖。是工厂家族中最
简单工厂的缺点:违背了开放-封闭原则,一旦需求变化,程序的变动会很大!
简单工厂模式如图所示:
代码实现,推荐十期任焱的设计模式之简单工厂与工厂方法,里边有美食哦!
抽象工厂
抽象工厂模式是指当有多个抽象角色的时候使用一种工厂模式。它可以向客户端提供一个接口,使客户端
在不必制定产品的具体的情况下,创建多个产品对象。
所以抽象工厂的具体定义:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。
抽象工厂的优点(如图):
1、便于交互产品序列,使得变化更灵活2、创建实例过程与客户端分离,使改动变得最小。
工厂方法模式 VS 简单工厂
使一个类的实例化延迟到 其子类。
先解释工厂方法的定义:工厂方法模式定义于一个用户创建对象的接口,让子类决定实例化哪一个类。工厂方法
前边不是说了吗?简单工厂不符合开放-封闭的原则,所以为了解决这一问题,工厂方法模式应运而生。那么工
厂方法模式是如何实现开放-封闭原则的呢?在工厂方法实现时,它把简单工厂的内部逻辑判断移到客户端代码实
现。所以,如果需求变化,只需改变客户端代码就OK了。
工厂方法模式结构如图所示:
三者联系
工厂模式就是将大量有共同的接口的类实例化,而且不必事先知道每次要实例化哪一个类的模式。它定义一个用
于创建对象的接口,有子类决定实例化哪一个类。工厂模式相当于创建实例对象的new,经常要根据类class生成实例
对象,如A a = new A()工厂模式也是用来创建实例对象的。
总结
学设计模式的时候一直不知道怎么总结,然后听了寒子的建议,看了看设计模式最后的总结汇总,总结了一点点
关系,才敢开始写总结,不然这个总结不知道什么时候才会出生呢!所以看书得宏观把控是必须的,总结也必须与进
度步伐一致!
这篇关于【大话设计模式】--工厂家族的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!