C++设计模式(一)——创建型模式

来源:互联网 发布:哪个软件可以买双色球 编辑:程序博客网 时间:2024/06/03 20:18

    设计模式指导我们怎样去创建、维护、分配面向对象系统中的实体类,以获得高内聚、低耦合的面向对象系统,从而提高系统的可维护性和可复用性。设计模式是OO的一些设计思想的一个总结(但不是全部),因此设计模式和OO的设计原则经验没有矛盾,而是殊途同归。

一、创建型模式

1、Factory模式

        Factory模式的两个最重要的功能:

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

      2)使得具体化类的工作延迟到了子类中。

2AbstractFactory模式

AbstractFactory模式关键就是将这一组对象的创建封装到一个用于创建对象的类(ConcreteFactory)中,维护这样一个创建类总比维护n多相关对象的创建过程要简单的多。

AbstractFactory模式是为创建一组(有多类)相关或依赖的对象提供创建接口,而Factory模式正如我在相应的文档中分析的是为一类对象提供创建接口或延迟对象的创建到子类中实现。并且可以看到,AbstractFactory模式通常都是使用Factory模式实现(ConcreteFactory1)。

3Singleton模式

Singleton模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?

通过维护一个static的成员变量来记录这个唯一的对象实例。通过提供一个staitc的接口instance来获得这个唯一的实例。

4Builder模式

当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开来,这样做的好处就是通过一步步的进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。

5Prototype模式

Prototype模式也正是提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。

其关键就是(C++中)拷贝构造函数的实现方式,这也是C++实现技术层面上的事情。由于在示例代码中不涉及到深层拷贝(主要指有指针、复合对象的情况),因此我们通过编译器提供的默认的拷贝构造函数(按位拷贝)的方式进行实现。说明的是这一切只是为了实现简单起见,也因为本文档的重点不在拷贝构造函数的实现技术,而在Prototype模式本身的思想。

 

*Prototype模式和Builder模式、AbstractFactory模式都是通过一个类(对象实例)来专门负责对象的创建工作(工厂对象),它们之间的区别是:Builder模式重在复杂对象的一步步创建(并不直接返回对象),AbstractFactory模式重在产生多个相互依赖类的对象,而Prototype模式重在从自身复制自己创建新类。

原创粉丝点击