9. Abstract Factory 抽象工厂模式

  和工厂模式解决的问题的不同之处是,抽象工厂创建的是一系列相互依赖的对象。

比如连接数据库、生成查询语句、执行语句三个接口,对于不同的数据库类型,要生成不同的子类。因为是面向接口的编程,所以在主框架中不能出现new,所以想到工厂模式,对于每个接口都要创建相关的工厂类,在工厂类中创建子类的对象,但这三个类是相互依赖的,如果是访问mysql数据库,那么三个都得生成mysql相关的类,如果其中一个与别的不一样,就会出错。为了防止它们生成依赖不同数据库的类,就将它们的对象创建方法放在一个类的某一方法中一起创建。也就是将生成三个子类对象的三个工厂合为一个。

 

 

 

其中AbstractProductA与AbstractProductB对应相互依赖的一组接口,

ProductA2与ProductB2对应具体可能实现类,如sql相关的类。

AbstractFactory对应抽象工厂,用来生成AbstractProductA与AbstractProductB的对象,其实这里也使用了多态,其实是生成它们的子类ProductA2与ProductB2,当然也可能是ProductA1与ProductB1(可以看作对应orcle数据库的相关类)。

最近看的一篇博文,将简单工厂、工厂方法、抽象工厂的区别以及抽象工厂的改进写地不错:

https://blog.csdn.net/u012156116/article/details/80857255#commentBox

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值