在前面设计模式汇总中我们从宏观整理了设计模式中整体分类,下面针对其中的创建型模式单独讨论内部的分类原则和哥哥设计创建型模式的核心思想。请看下图:
首先区分工厂三姐妹我们可以设想一个情景,制造车的工厂,三者是逐级在顶层进行抽象的关系大概的类图如下图:
简单工厂是只有一个工作车间一整条生产线
工厂方法是根据需要自动建造多个车间多条生产线
抽象工厂是由不同系列不同牌子的工厂
另外的两...
分类:
其他好文 时间:
2014-08-13 01:22:04
阅读次数:
239
在软件设计中经常会遇到这样的对象转移的条件表达式过于复杂的情况,这时可以采用if else或者switch case等语句进行处理,但是这样做的弊端就在于每增加一次状态,都需要对以前的代码进行修改,这不符合面向对象的开闭原则。此时更好的方法就是将状态的判断逻辑转移到表示不同状态的一系列类中,这就是今天要介绍的状态模式。
状态模式的定义,允许一个对象在其内部状态改变时改变它的行为。
状态模式的U...
分类:
其他好文 时间:
2014-08-13 01:18:25
阅读次数:
206
在设计模式汇总中,我们已经从宏观上分析了三类设计模式的分类依据,下面详细总结一下结构型设计模式。结构型设计模式是从类的结构优化的角度为了减少创建对象的数量和提高代码的复用性考虑的。下面参加设计模式的讨论之后参考大话设计,主要是加入很多自己理解总结的一张思维导图。
我的分类原则,这里说明一下:结构型设计模式主要功能时系统的“瘦身”,优化代码。其中装饰模式和外观模式是针对对象本身的抽象封装。...
分类:
其他好文 时间:
2014-08-13 01:13:55
阅读次数:
154
thread_group是boost库中的线程池类,内部使用的是boost::thread。随着C++ 11标准的制定和各大编译器的新版本的推出(其实主要是VS2012的推出啦……),本着能用标准库就用标准库的指导原则,决定把项目中多线程相关的部分代码从boost::thread迁移到std::th...
分类:
其他好文 时间:
2014-08-13 00:59:24
阅读次数:
191
所谓的设计原则也好,设计模式也罢,无非是在面向对象的前提下产生的。而面向对象的前提是抽象,面向对象的三大特征是封装、继承、多态。为了从本质上理解设计模式,下面我们分析一下这些概念之间的关系。请看下图:
面向对象思想的前提是抽象,从现实世界中抽象出一些对象或者类的共性之后封装成类或者抽象类或者接口。这些类也罢接口也好是为了增加代码的复用性,既然是为了复用,当然需要子类来继承。在继承...
分类:
其他好文 时间:
2014-08-12 22:08:54
阅读次数:
205
漫漫人生路,大千世界你我都愿意跟有原则的人共事,每个有原则的人做事都有自己的模式。代码如人生,我们上篇文章系统的讲解了设计原则,现在怎样把这些原则渗透到设计模式中。
考虑到人的大脑对于处理3以内的数字很擅长,并且最大不能超过5。本着“全心全意为人民服务”的理念,我将23个设计模式总结整理到如下的一张图:
首先,从宏观讲为了更好地创建一个类,创建型设计模式应运而...
分类:
其他好文 时间:
2014-08-12 22:08:24
阅读次数:
305
这本《设计模式之禅》得来不易,当时是在CSDN论坛中向秦小波老师提问有幸获得的。读这种经典书籍不能如读小说,逛十里洋场意在消遣,更多的应该是边读变问,每到重点就应该问为什么。秦小波老师的语言有时幽默,有时又切中要害,引人深思。依赖倒置原则可以说是六大设计原则中比较难理解的,在很多框架中都用到该原则,例如Spring。程序世界和现实世界一样是普遍联系的,换句话说就是对象也是存在依赖关系的,我们不可能让所有的对象都割裂开来,那这样的话程序也没法运转,在保持依赖的同时需要降低对象之间的耦合度,能真正做好确实是一门...
分类:
其他好文 时间:
2014-08-12 17:12:24
阅读次数:
171
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限....
分类:
其他好文 时间:
2014-08-12 10:06:53
阅读次数:
199
《设计心理学》这本书是与《给大家看的设计书》一起买的,本来是想让孩子了解设计知识的启蒙书,没想到发现对搞IT的也很有用,根据软件的需求设计用户界面时这些原则还是可以一用的。从书名上有心理学三个字以为书比较难懂,后来又看到香港大学推荐的50本书清单中也包含它,就从书架上把它取了下来。
这本书是在...
分类:
其他好文 时间:
2014-08-12 09:02:03
阅读次数:
575
最近一段时间,粗略的查看了一下Spring源码,对Spring的两大核心和Spring的组件有了更深入的了解。同时在学习Spring源码时,得了解一些设计模式,不然阅读源码还是有一定难度的,所以一些重要的设计模式简单的做了阐述。同时还会简单的加入一些GOF中提到的设计原则。Spring的源码阅读.....
分类:
编程语言 时间:
2014-08-12 09:01:13
阅读次数:
291