【大话设计模式】——创办型模式总结

【大话设计模式】——创建型模式总结

    看大话时是分类看的,因为创建型模式所包含的模式少,所以先从这里看的。把这几个模式看完了,来个简单的总结。这篇博客将从“是什么?”、“有什么?”、“何时用”三个方面进行总结。


一、是什么?


创建型:从字面上来说就是创建对象的设计模式。在进行创建对象时候,可能会增加复杂度,我们可以根据实际情况

合适的设计模式创建对象来解决这些问题。

    创建型模式一般都是将创建对象的过程与其表示进行分离,提高代码的复用性,可维护性,灵活性以及扩展性。


二、有什么?


【大话设计模式】——创办型模式总结

(一)概念介绍


1、工厂家族——简单工厂(Simple Factory):是由一个工厂对象决定创建出哪一种产品类的实例,是工厂模式家族中最简单实用的模式。

个人理解:将界面与业务逻辑分离,分离出一个专门创建实例的类。

2、工厂家族——工厂方法(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

个人理解:为了遵循扩展开放,修改关闭原则,将简单工厂类转换为工厂方法接口,将其Switch分支分离成子类去继承工厂方法接口类,顺利的将创建对象的过程延迟到子类。

3、工厂家族——抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

个人理解:工厂方法模式的转变,增加工厂方法接口的方法就重构出了抽象工厂。

4、原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

个人理解:根据原型创建副本,克隆出的副本可以进行修改。

5、建造者(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

个人理解:将对象的创建过程与其表示分离,例如去餐厅点菜,客人不需要知道炒菜的具体过程。

6、单例(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。

个人理解:有点类似与数据库中的锁,同一时刻只有一个对象可以访问并创建一个实例,其他的对象只能读,不能创建实例,必须等其释放关闭之后才可以创建实例。

(二)遵循原则

                                                                                                                                                                                                                               【大话设计模式】——创办型模式总结                                                                                 

三、何时用


1、Simple Factory:要什么,给什么!工厂里有许多产品,而客户想要什么,工厂就可以返回相应的产品。

例如:

(1)书中的计算器,客户端要用加法,运算工厂就将实例化出来的加法运算拿出来给客户端;

(2)去早餐店买早餐,早餐店就相当于一个早餐工厂,可以提供馒头,包子,馄饨等,当顾客说要包子时,营业员就拿出一个包子给顾客。

2、Factory Method:类并不知道需要创建什么样的子类;子类可以指定应该创建什么样的对象;

例如:顾客买衣服,不需要知道衣服是怎么做出来的,而服装厂不需要知道顾客要什么衣服,由具体的服装类决定。

3、Abstract Factory:和Factory Method类似,当相互依赖对象的接口多的时候可以用抽象工厂。

4、Prototype:通过拷贝创建新的对象,原型指定创建的种类。例如:

(1)做兼职写手抄报,照着一个模子写,可以根据需求做一些更改。

(2)生成彩虹,只需要创建一种颜色,其他的通过克隆并修改以下颜色就可以了。

5、Builder:复杂对象的构建,构建过程相同,但是表示不同。例如:炒菜的步骤是一样的,是不变的,但是放的材料的量不同,结果就不同。有喜欢甜的,就多放糖;有喜欢咸的就多放盐。                                                                               
6、Singleton:让一个线程在一个时间段内独占。例如:

(1)打印机,同一时间内,只能有一台计算机使用此打印机。

(2)看到单例模式,让我想到了数据库中的并发控制。


四、感受


    上一篇博客,完全是按照书上的思路加上自己的理解来的,看同学们博客都与生活相联系,感觉自己差很多啊,所以后来学的时候尽量联系自己的生活,也不知道想的对不对,反正是强迫自己去想觉得很好玩。对于遵循原则那块有点拿不准,可能是原则还没有理解到位呢,希望在后面的学习中能够更好的理解面向对象的六大原则。
1楼u013036688昨天 20:52
学这块迷迷糊糊的现在好好总结一下