工厂模式

一、简单工厂模式
简单工厂模式也叫静态工厂模式,将所有的创建对象任务交给了一个工厂类来实现,要想使用对象,直接找工厂类即可。

步骤:
1.定义抽象类,定义抽象方法
2.定义具体的操作类(实现类),继承抽象类,实现抽象方法
3.定义简单工厂,定义创建对象方法(根据传递不同的参数类型创建不同的对象)
4.调用工厂类创建对象


二、工厂方法模式
简单工厂模式当中,是根据需要传递相应的参数去调用工厂中的方法创建对象,但开发人员并不知道哪些参数能够传递,这样就造成返回不了自己想要的对象的后果,工厂方法模式将每个对象都交给各自工厂去创建,避免了这种弊端。

步骤:
1.定义抽象类,定义抽象方法
2.定义工厂接口(规范),定义创建方法
3.定义各自工厂实现类,实现工厂接口,重写创建方法


三、抽象工厂模式
在抽象工厂中,有一个产品族的概念:即位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模型所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。
工厂方法是在解决一个产品多个层级方面的事情;而抽象工厂致力于解决多个产品多个层级方面的事情


抽象工厂:声明一组用于创建一族产品的方法,每个方法对应一种对象;在抽象工厂中声明了多个工厂方法,用于创建不同类型的对象,抽象工厂可以是接口,也可以是抽象类或者具体类


具体工厂:具体工厂实现了抽象工厂,每个工厂方法返回一个具体对象一个具体工厂所创建的具体对象构成一个族


抽象类接口:提供一组所有类都具有的业务方法


抽象类:用于实现抽象接口所定义的业务方法,但是该角色对于抽象接口定义的方法只做抽象实现,即所有实现都被定义为抽象方法,最终的具体实现全部交给具体类实现。引入该角色主要是为了根据声明不同的抽象类,将类区分为不同的等级结构。


具体类:继承抽象类,主要用于实现抽象类中声明的抽象方法,完成不同等级结构,不同族的业务方法的具体实现


工厂模式优点:
1.通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。
2.对调用者屏蔽具体的实现类。调用者只关心接口就可以了。即使变更了具体的实现,对调用者来说没有任何影响
3.降低耦合度。我们需要做的仅仅是实例化好产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。


工厂模式使用场景:
1.在任何需要生成复杂对象的地方,都可以使用工厂模式。
2.工厂模式是一种典型的解耦模式。假如调用者自己组装产品需要增加依赖关系时,可以考虑使用工厂模式。
3.由于工厂模式是依靠抽象架构的,它把实例化产品的任务交由实现类完成,扩展性比较好。不同的产品用不同的实现工厂来组装


三种模型的区别:

  • 简单工厂只有三个要素,没有工厂接口,并且得到产品的方法一般是静态的,拓展性稍弱。
  • 工厂方法模式提供的所有产品都是来自同一个接口或抽象类;抽象工厂模式所提供的产品则是不同的接口
  • 抽象工厂模式是工厂方法模式的升级版本,可以用来创建一组相关依赖的对象
  • 工厂方法模式针对的是一个产品等级结构;抽象工厂针对多个产品等级结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值