工厂模式与抽象工厂模式

为了提高内聚和松耦合,我们经常会抽象出一些公共的接口形成抽象基类或者接口,然后我们可以通过声明一个指向基类的指针来指向实际的子类来实现,这样就达到了多态的目

的,这样就出现了一个基类拥有众多子类的问题,当我们需要这个接口时,但却不知道要实例化哪个子类(因为接口或者抽象类是不能被实例化的)所以工厂模式就应运而生,它

主要解决两个问题

1.定义创建接口的对象,封装了对象的创建

2.使得类的具体化或者实例化延迟到了子类,工厂模式如下:


图中看不出来的是无论是Factory还是Product都是抽象基类,拥有一个纯虚函数,说明是抽象基类,除此之外,还有就是他们的构造函数都是protected属性的,只能被子类调

用,还有就是在创建的时候返回的都是基类的指针。缺点在于工厂创建的只能是基于一个抽象类的子类



现在说说抽象工厂模式:相比较于工厂模式,抽象工厂模式的优点在于他可以创建不同组对象,每一组是基于一个基类的,所以这么看来,抽象工厂模式只是工厂模式的一种扩


同上AbstractFactory,AbstractProductA,AbstractProductB都是抽象基类,ConcreteFactory1和ConcreteFactory2就是工厂模式中的ConcreteFactory,ConcreteFactory1负责

ProductA1和ProductB1的创建,ConcreteFactory2负责ProductA2和ProductB2的创建。所以不同于Factory模式的就是在能否创建不是基于一个基类对象的工厂类!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

世纪殇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值