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

来源:互联网 发布:淘宝上6s主板是真的吗 编辑:程序博客网 时间:2024/06/04 19:50

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

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


简单工厂


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

及其相应的职责如下:

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

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

共有的公共接口。

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

类。

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

简单最基本的。

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

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

抽象工厂


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

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

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




工厂方法模式 VS 简单工厂



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

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

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

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

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

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



三者联系


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

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

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



总结


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

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

度步伐一致!















0 0
原创粉丝点击