设计模式之(三)多态工厂

上期简单工厂模式的弊端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工厂方法模式概述

在这里插入图片描述
工厂方法模式:定义一个用于创建对象的接口,让其子类决定将哪一个类实例化,工厂模式让一个类的实例化延迟到了其子类,被称为工厂模式,又被成为虚拟构造器模式,也是一种创建型模式。
在这里插入图片描述
图中我们可以得知有四个角色
(1)抽象产品Product,工厂模式所实例化对象的超类,产品对象的公共父类
(2)ConcreateProduct 具体产品类,实现抽象产品接口,由专门的工厂所创建,具体工厂与产品一一对应。
(3)Factory 抽象工厂:声明工厂方法用于返回一个产品,是工厂方式模式的核心,所有创建产品对象的具体工厂类必须实现此接口。
(4)ConcreatedFactory 具体工厂:由客户端调用,返回一个具体产品类的实例。
在这里插入图片描述
在这里插入图片描述

使用反射跟配置文件注入对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工厂方法的隐藏

在这里插入图片描述
在这里插入图片描述

多态工厂的总结

优点

(1)作为简单工厂的衍生,多态工厂更具有可扩展性,并且还将具体产品实现的细节对客户端进行了隐藏,客户端无需知道具体产品的类名。
(2)多态工厂模式是基于产品和工厂的多态,具体工厂能够让某种工厂实例化自身对象,执行对某种具体产品的操作。
(3)使用多态工厂模式最大的优点在于,新增一个产品时不需要更改原有的代码,只需要增加具体工厂和具体产品,具体工厂继承抽象工厂,具体产品继承抽象产品。

缺点

(1)多态工厂在添加新的产品或工厂时,都需要添加新的类,这对系统的复杂度有一定的提升。
(2)抽象工厂将实例化的职责交给了其子类,而具体某个工厂将交由配置文件或是DDO,反射等技术实现,同样一定程度上增加了系统复杂度。

应用场景

(1)客户端不需要知道具体产品的类名,要知道对应的工厂,具体产品由具体工厂所创建。
(2)具体工厂实例化自身,用到面向对象的多态性和里氏替换原则,在程序运行时,子类对象覆盖父类对象,系统将更容易扩展。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值