设计模式
renwotao2009
努力程度之低,离拼天赋还远的很
展开
-
Command设计模式
Command对象是一个“和其实际执行着分开存储”的组件。其重要目的是降低系统中两个部分(请求者 invoker 和接收者 receiver )之间的依存性。 典型的行为次序: 1 客户端产生一个 ConcreteCommand 对象,并传给它足够信息以备执行某项任务。 2 客户端将 ConcreteCommand 对象中的 Command 接口传给 invoker(请求者),由它保存这个接原创 2014-11-24 19:15:20 · 795 阅读 · 0 评论 -
ObjectFactories
假设你在编写一个简单的绘图程序,该程序允许使用者编辑简单的向量图形(包括线、圆、多边形等)。采用面向对象风格,定义一个 abstract class shape,让所有图形都派生于它:class Shape{public: virtual void Draw() const = 0; virtual void Rotate(double angle) = 0;原创 2014-12-09 21:26:36 · 768 阅读 · 0 评论 -
AbstractFactory
抽象工厂设计模式设计一个格斗游戏,有初等级别和高难度级别。初等级别的地方士兵、怪兽和超级怪兽攻击力低下,高难度则相反,攻击力很强。要实现这个游戏,要完成两个目标:一个是敌人(有士兵、怪兽和超级怪兽),另一个是成批量的创建敌人(有士兵、怪兽和超级怪兽),那么抽象工程设计模式正好满足需求。关于游戏中的 UML 图设计游戏类class Soldier {};class Sil原创 2014-12-11 21:25:35 · 801 阅读 · 0 评论 -
观察者模式
1 观察者模式的定义观察者模式,顾名思意就是观察与被观察的关系,比如你在烧开水得时时看着它开没开,你就是观察者,开水就是被观察者;再比如说你在带小孩,你关注她是不是饿了,是不是喝了,是不是撒尿了,你就是观察者,小孩就被观察者。观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或转载 2015-05-30 21:42:38 · 816 阅读 · 0 评论 -
每个程序员需掌握的20个代码命名小贴士
代码中到处都需要命名。作为程序员,我们得给类命名,给变量命名,给函数命名,给参数命名,给命名空间命名,等等等等。下面有20条小贴士能帮助你提高你的命名能力。1.使用能够表达意图的名字名字得能告诉我们它要做什么,为什么存在,以及是如何工作的。选择能够表达意图的名字,将更有利于我们理解代码。int d; // elapsed time in daysint elapsedTimeInDays;int转载 2015-05-24 14:55:49 · 797 阅读 · 0 评论 -
Singleton(一)
1 用以支持 Singleton 的一些 C++ 几基本手法// Header file Singleton.hclass Singleton{public: static Singleton* Instance() { if (!pInstance_) pInstance_ = new Singleton; return pInstance_; }private:原创 2014-11-29 11:38:26 · 771 阅读 · 0 评论 -
公共技术点之面向对象六大原则
概述在工作初期,我们可能会经常会有这样的感觉,自己的代码接口设计混乱、代码耦合较为严重、一个类的代码过多等等,自己回头看的时候都觉得汗颜。再看那些知名的开源库,它们大多有着整洁的代码、清晰简单的接口、职责单一的类,这个时候我们通常会捶胸顿足而感叹:什么时候老夫才能写出这样的代码!在做开发的这些年中,我渐渐的感觉到,其实国内的一些初、中级工程师写的东西不规范或者说不够清晰的原因是缺乏一些指导原则。他们转载 2015-06-15 09:35:49 · 697 阅读 · 0 评论 -
Singleton(二)
Singleton Dead Reference 问题假设有程序使用了3个 Singletons:Keyboard、Display 和 Log。前两者分别模拟所对应的真实物体,Log 用于错误报告(可以是一个文本文件或者控制台显示等)。程序 Log 构造需要一定开销,最好在出现错误时构造,程序执行过程没有任何错误时,Log 根本不会产生。程序会向 Log 报告 Keyboard 或 Dis原创 2014-12-04 19:34:02 · 1117 阅读 · 0 评论 -
变量命名
1 变量名中计算限定词:Total,Sum,Average,Max,Min,Record,String,Pointer...。举例:revenueTotal,expenseTotal总支出2 对仗工整的名词:begin/end,first/last,locked/unlocked,min/max,next/previous,old/new,opened/closed,visible/unvis原创 2012-12-06 22:49:28 · 871 阅读 · 0 评论 -
用C++实现插件体系结构
本文讨论一种简单却有效的插件体系结构,它使用C++,动态链接库,基于面向对象编程的思想。首先来看一下使用插件机制能给我们带来哪些方面的好处,从而在适当时候合理的选择使用。1. 增强代码的透明度与一致性:因为插件通常会封装第三方类库或是其他人编写的代码,需要清晰地定义出接口,用清晰一致的接口来面对所有事情。你的代码也不会被转换程序或是库的特殊定制需求弄得乱七糟。2. 改善工程的模块化:转载 2011-11-06 11:32:18 · 4463 阅读 · 0 评论 -
C++中实现回调机制的几种方式
转自:http://www.cppblog.com/weiym/archive/2012/08/28/188515.html(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:type转载 2013-02-12 20:54:17 · 808 阅读 · 0 评论 -
一个模块接口的组成
文章转自:http://blog.csdn.net/acloudhuang/article/details/6405930一个模块的接口由两部分组成,第一部分是回调接口,这些接口在主接口中被使用。第二部分是主接口,展示对外的服务。具体看下面的代码:// 回调接口1class ICallBackInterface1{};// 回调接口2class ICallB转载 2012-06-03 11:07:55 · 1086 阅读 · 0 评论 -
信息隐藏(Information Hiding)原则
文章转自:http://blog.csdn.net/acloudhuang/article/details/6635230信息隐藏是结构化设计与面向对象设计的基础。在结构化中函数的概念和面向对象的封装思想都来源于信息隐藏。软件业对这个原则的认同也是最近十年的事情。 David Parnas在1972年最早提出信息隐藏的观点。他在其论文中指出:代码模块应该采用定义良好的接口来封装,转载 2012-07-20 14:34:12 · 1805 阅读 · 0 评论 -
做为项目经理必读:不断的学习,学习,再学习
本文转自:http://blog.csdn.net/hjm4702192/article/details/8306449问题是最好的学习机会日本经营之神松下幸之助曾经说过:“工作就是不断发现问题、分析问题、最终解决问题的一个过程,晋升之门将永远为那些随时解决问题的人敞开着。”可见,工作过程中有问题是正常,没有问题那才是真正的问题。在发生问题能时,能勇于面对问题、解决问题的人,才是公司真正的转载 2012-12-17 19:16:07 · 1153 阅读 · 0 评论 -
改良程序的11技巧
本文转自:http://bbs.csdn.net/topics/390320776有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧:1转载 2012-12-19 19:00:55 · 584 阅读 · 0 评论 -
多些时间能少写些代码
本文转自:http://coolshell.cn/articles/5686.html作者:陈浩作者网站:酷壳我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些。@左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试。聪明的老板也会让团队这样做。而傻逼的老板,苦转载 2012-12-22 08:25:49 · 659 阅读 · 0 评论 -
少编码多思考:代码越多 问题越多
摘要:本文作者Ed Finkler是一名PHP、Python、JavaScript程序员。有许多产品开发经验,例如Spaz,一个开源微博客户端桌面和WebOS。他在编码时总结了一些非常益用的编码守则,分享给大家。大约一年前,我曾编写过一些PHP Web编程守则——MicroPHP Manifesto。但我发现各个语言之间有一些共同的编程/编码规则,这或许是我在熟悉各种类型的编程语言后的一些转载 2012-12-17 18:55:23 · 692 阅读 · 0 评论 -
OO思想解决农场养牛问题
文章转自:http://www.cnblogs.com/iou123lg/archive/2013/03/24/2977945.html最近在自学设计,碰到一题目,我相信网上很多地方也能找到这个题目,题目内容如下: 农场一头小母牛每年生头小母牛母牛五岁产母牛二十年上多少牛请使用OO思想来解决这个问题。 这题目很有意思,为什么呢?因为读起来朗朗上口,很顺溜,哈哈,转载 2013-04-05 16:53:47 · 1171 阅读 · 1 评论 -
对象的消息模型
文章转自:http://www.cnblogs.com/weidagang2046/archive/2011/08/14/object-messaging-model.html话题从下面这段C++程序说起,你认为它可以顺利执行吗?//C++class A { public: void Hello(const std::string& name) {转载 2012-12-22 17:06:33 · 619 阅读 · 0 评论 -
策略模式
策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现。网上商店购买商品,在网上支付时,我们可以选择不同银行提供的支付接口,因为银行不同其提供的支付算法不同。原创 2016-03-27 16:48:34 · 1129 阅读 · 1 评论