工厂模式与抽象工厂模式

来源:互联网 发布:华为云计算培训学校 编辑:程序博客网 时间:2024/05/18 03:42

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

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

主要解决两个问题

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

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


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

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



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


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

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

原创粉丝点击