设计模式看了不下10遍了。不过每次看都会有不同的理解,和自己的项目经验有关系。
下面再次总结一下对设计模式的一些简单理解。
具体设计模式内容不记录了,这里只是简单精要的说明一下自己对各种模式的理解。
第一大类,创建型模式
1.abstract factory抽象工厂<直接创建对象>
目的,提供创建一系列相关对象的接口,无需指定他们的具体类。
说白了,就是提供一系列创建对象的接口,这些接口干嘛用的呢,就是用来创建各种完整的最终对象。
Room* r = factory.MakeRoom(); //直接构建对象Room
2.builder生成器<先构建子对象,然后在构建最终的对象>
目的,将复杂的对象构建过程封装起来,使得同样的构建函数,达到不同的构建结果。
其实这个模式可以理解成abstract factory的延伸,这里要把abstract factory里面提到的"创建各种完整的最终对象"扩展成提供创建一个完整对象的各种子接口,就是让用户可以随便组合子接口,最后得到一个想要的对象。
createMaze(Builder& builder) {
builder.BuildMaze();//构建迷宫
builder.BuildRoom(1);//构建一个房间
builder.BuildRoom(2);//构建另一个房间
return builder.GetMaze();//这里才返回最终的对象
}
3.factory method工厂方法<抽象创建对象的接口>
目的,定义一个用于创建对象的接口,让子类决定实例化哪一个类。
这个模式其实就是abstract factory细化,把创建对象的接口抽象出来成为抽象基类里面的抽象方法了,在子类里面随便定义各种接口的具体实现了。
C++/Java里面经常用模板类来实现这个模式。
4.prototype原型
目的,通过克隆技术实现创建对象。
一般需要实现一个方法clone()
最后是用得最多的singleton
5.singleton单件
目的,保证程序运行中只存在一个该类的实例。