【设计模式】工厂三姐妹

来源:互联网 发布:淘宝店如何刷流量 编辑:程序博客网 时间:2024/04/29 19:52

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

1、结构图


2、简介

     1)简单工厂:工厂对象根据参数不同返回不同类的实例

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

                       ②缺点:工厂类职责太,违反了单一职责原则。如果要增加类,就要修改工厂类,违反了开放-封闭原则。

3、理解

      简单工厂其实就是在客户与实例中增加了一个中介,客户想要什么,中介就根据你的需求给你什么,完成了客户端和具体对象的初步的解耦。就像学校的自助饮品机,我们只需要选择需要的饮料,当然还要交钱,饮料机就可以给我们想要的饮料,很是方便。但是如果我想要矿泉水,内部结构和算法还有外观都需要改变,那可就麻烦了。

二、工厂方法

1、结构图


2、简介

      1)工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

       2)优缺点:①优点:工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。

                       ②缺点:工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,如果增加一个产品,就要修改客户端。

3、理解

        工厂方法模式是简单工厂模式的进一步抽象和推广,有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作推延到其子类去完成,可以在不改变工程的情况下增加新产品。

三、抽象工厂

1、结构图


2、简介

       1)抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

        2)优缺点:①优点:抽象工厂易于交换产品系列,而且让具体的创建实例过程与客户端分离。

                   ②缺点:在产品级上来看是优化了,但是如果要增加功能,比如再增加一个ProductC,那么需要改动的就太多了。

3、理解

        抽象工厂是对工厂方法的进一步优化。由于具体工厂类在一个应用中只需要在初始化的时候出现一次,使得改变一个应用的具体工厂变得非常容易,只需要改变具体工厂即可使用不同的产品配置,使系统耦合度逐渐降低,变得灵活。

四、总结

1、简单工厂:简单工厂模式通过工厂类接收的参数的不同来返回不同的对象实例。

2、工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

3、抽象工厂:抽象工厂是应对整体产品来说的。

 

0 0
原创粉丝点击