【大话设计模式】工厂三姐妹

简单工厂

官方术语(我自己定义 的):

         专门定义一个来负责创建其他的类。

         简单工厂通过一个参数动态的实例化一个产品对象,被创建的实例通畅具有共同的父类或者接口

角色及其职责:

         工厂类(Creator)角色:简单工厂模式的主要组成部分,它负责通过传进来的参数实现创建所有对象实例。如OPerationFactory类

         抽象(Product)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例的公共部分。如operation类

         具体产品(ConcreteProduct)角色:抽象产品类的子类,简单工厂模式的创建目标,,实现了抽象产品类中定义的所有接口方法。如operationADD类。

优缺点:

         优点:通过传参,借助工厂类实现,去实例化某个对象的具体类对象。这样大大方便了用户直接根据工厂类去创建实例,免去了了解实例是如何创建和组织的。

         缺点:之所以用户不用判断实例是怎样创建和组织的,是因为所以的逻辑判断都集中在工厂类,当添加新功能时,需要修改工厂类,从而违背了开放——封闭原则,因为扩展性不好。

        

工厂方法

官方定义:

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

角色及其职责:

         抽象工厂角色: 这是工厂方法模式的核心。是具体工厂角色必须实现的接口或者必须继承的父类。

         具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。

         抽象产品角色:它是具体产品继承的父类或者是实现的接口。

         具体产品角色:具体工厂角色所创建的对象就是此角色的实例。

优缺点:

         优点:改进了简单工厂中 的开放封闭性原则。

         缺点:增加了客户端和具体产品的依赖。

抽象工厂

官方定义:

         提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。

角色及职责:

         抽象工厂:声明生成一系列抽象产品的方法

         具体工厂:执行生成一系列抽象产品的方法,生成一系列具体的产品

         抽象产品:为这一系列的某一种产品声明接口

         具体产品:定义具体工厂生成的具体产品的对象,实现产品接口

优缺点:

         优点;方便的更换产品的系别。就像把宝马车的牌子换成奔驰车的牌子。

         缺点:增加同一系别下产品非常的困难。

一句话解说工厂三姐妹区别:

         简单工厂:简单工厂的工厂类是一个静态的方法类,通过传参来实现对不同的对象实例化。

         工厂方法:为每一个产品提供一个工厂类,通过不同 的工厂来创建产品实例,例如大学生志愿者类,和社会志愿者类,正是因为如此,可以添加任意同等级产品。比如添加小学生志愿者,中学生志愿者等等。

         抽象工厂:他应该是一系列产品 的品牌。比如宝马车类,可以生产卡车,轿车等。奔驰车类,也可以生产卡车,轿车。在后期的扩展中增加一个车的品牌很简单,但是如果要增加一个品牌下的车型确实非常的复杂的,需要大量的修改,这就违背了封闭原则。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aiming66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值