您的位置:首页 > 其它

【设计模式】工厂三姐妹

2015-01-25 21:41 253 查看
创建型模式中有这样三个模式:简单工厂、工厂方法、抽象工厂。这三个模式主要是针对软件设计中的“开放-封闭原则”和依赖倒转原则的。三个工厂主要功能就是帮助我们把对象的实例化部分抽取了出来,从而优化了代码的架构,并且增强了系统的扩展性。

一、简单工厂
1、结构图



2、简介
1)简单工厂:工厂对象根据参数不同返回不同类的实例
2)优缺点:①优点:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

②缺点:工厂类职责太,违反了单一职责原则。如果要增加类,就要修改工厂类,违反了开放-封闭原则。
3、理解
简单工厂其实就是在客户与实例中增加了一个中介,客户想要什么,中介就根据你的需求给你什么,完成了客户端和具体对象的初步的解耦。就像学校的自助饮品机,我们只需要选择需要的饮料,当然还要交钱,饮料机就可以给我们想要的饮料,很是方便。但是如果我想要矿泉水,内部结构和算法还有外观都需要改变,那可就麻烦了。
二、工厂方法
1、结构图



2、简介
1)工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2)优缺点:①优点:工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。

②缺点:工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,如果增加一个产品,就要修改客户端。
3、理解
工厂方法模式是简单工厂模式的进一步抽象和推广,有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作推延到其子类去完成,可以在不改变工程的情况下增加新产品。
三、抽象工厂
1、结构图



2、简介
1)抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2)优缺点:①优点:抽象工厂易于交换产品系列,而且让具体的创建实例过程与客户端分离。

②缺点:在产品级上来看是优化了,但是如果要增加功能,比如再增加一个ProductC,那么需要改动的就太多了。
3、理解
抽象工厂是对工厂方法的进一步优化。由于具体工厂类在一个应用中只需要在初始化的时候出现一次,使得改变一个应用的具体工厂变得非常容易,只需要改变具体工厂即可使用不同的产品配置,使系统耦合度逐渐降低,变得灵活。
四、总结

1、简单工厂:简单工厂模式通过工厂类接收的参数的不同来返回不同的对象实例。
2、工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
3、抽象工厂:抽象工厂是应对整体产品来说的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: