设计模式与SOLID
smilestone322
通过软考: 系统架构设计师和信息系统项目管理师考试
工业相机和DVR开发,熟悉windows驱动开发,camera sdk开发,3D摄像头sdk开发。
联系方式:smilestone322@sina.com
展开
-
UML 符号小结
1)关联 采用实线箭头 表示 :类A与类B的实例之间存在特定关系;2)依赖 采用虚线箭头 表示: 类A访问类B提供的服务;3)聚集 采用实线+菱形 表示:整体和部分的关系4)泛化 采用实线+三角形 表示:继承关系5)实现 采用虚线+三角形 表示:类与接口的关系;原创 2011-11-25 10:08:43 · 649 阅读 · 0 评论 -
策略设计模式--学习笔记
意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 适用环境:1) 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。2) 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。3) 算法使用原创 2013-03-17 11:54:37 · 1055 阅读 · 0 评论 -
模板方法模式和策略模式的相似点和差异性
Template 模式采用继承的方式实现算法的异构,其关键点就是讲通过算法封装在抽象基类中,并将不同的算法实现细节放在子类中实现。Template模式符合面向对象系统分析和设计中的一个原则,依赖倒置原则,父类调用子类的操作,底层模块实现高层模块声明的接口。这样控制权在父类,底层模块反而要依赖高层模块。 继承的强制性约束关系也让 Template 模式有不足的地方,我们可以看到对于Concret原创 2013-03-17 15:50:16 · 1887 阅读 · 0 评论 -
Visitor设计模式--学习总结
问题: 在面向对象系统的开发和设计过程中,经常会遇到一种情况就是需求变更,这样我们不得不去修改已有的设计,最常见的方法就是在实现好的类添加新的方法去实现客户新的需求,这样造成原来的设计根本就不可能封闭; 意图:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 适用环境:u 一个对原创 2013-03-17 16:45:27 · 965 阅读 · 0 评论 -
state设计模式--学习总结--state设计模式和策略设计模式的区别
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 适用坏境:1) 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2) 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这原创 2013-03-17 16:44:14 · 1086 阅读 · 0 评论 -
Command设计模式--学习总结
意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。适用环境:(1) 抽象出待执行的动作以参数化某对象。你可用过程语言中的回调(Callback)函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。Command模式是回调机制的一个面向对象的替代品。(2)原创 2013-03-17 16:44:44 · 951 阅读 · 0 评论 -
中介者设计模式在视频监控的显示图像模块中的应用
如题:原创 2013-05-12 21:35:02 · 1153 阅读 · 0 评论 -
UML类图与类的关系详解
转自:http://www.uml.org.cn/oobject/201104212.asp转载 2014-05-05 15:46:33 · 735 阅读 · 0 评论 -
Proxy Design Pattern(代理设计模式)
转自:http://www.codeproject.com/Articles/186001/Proxy-Design-Pattern翻译 2014-05-05 15:20:46 · 1160 阅读 · 0 评论 -
桥接设计模式的例子
转自:http://www.codeproject.com/Articles/890/Bridge-Pattern-Bridging-the-gap-between-Interface翻译 2014-05-05 14:31:07 · 931 阅读 · 0 评论 -
模板方法设计模式--学习笔记
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。适用环境:1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。3) 控制子类扩展。模板方法只在特定点调用“hook ”操作,这样就只允原创 2013-03-17 15:01:45 · 1014 阅读 · 0 评论 -
观察者设计模式--学习笔记
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 适用环境:1) 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。2) 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。3)原创 2013-03-17 11:03:51 · 1073 阅读 · 0 评论 -
设计模式之-Factory模式
Factory模式的两个最重要的功能:1)定义创建对象的接口,封装了对象的创建2)使得具体化类的工作延迟到了子类中。为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到原创 2013-01-01 09:09:24 · 695 阅读 · 0 评论 -
SOLID 原则 总结
1)单一责任原则2)开放封闭原则3)里氏替换原则4)依赖倒置原则5)接口分离原则 23种设计模式都符合这些原则的!原创 2011-11-26 09:41:52 · 993 阅读 · 0 评论 -
创建型模式Factory和AbstractFactory
Factory模式的2个主要功能:1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到子类中; 举例如下:vs2008编译通过:#pragma onceclass Product{public: Product(void); virtual ~Product(void)=0;};class ConcreateProduct:publ原创 2011-12-05 19:50:07 · 723 阅读 · 0 评论 -
结构型模式:Decorator模式,Composite模式,proxy模式
Decorator模式:在面向对象的设计和开发过程中,可能会经常遇到以下的情况;我们需要为一个已经定义好的类添加新的职责,通过情况我们会给定义一个新类继承自定义好的类,通过继承的方式解决这样的情况会带来系统的复杂性,因为继承的深度会变得很深。而Decorator提供了一种给类增加职责的方法,不是通过继承实现,而是通过组合。Decorator装饰模式是一种结构型模式,它主要是解决:”过度地使原创 2011-12-04 21:07:37 · 922 阅读 · 0 评论 -
结构型模式:Facade模式
Façade模式:简单来说,就是在我们实现一个软件时,可能定义了很多类,实现了很多功能,但是对于用户来说,很多sdk,他都不需要,它只需要一个init函数,就能使用sdk,比如,某款工业相机,提供了复杂的功能去控制和使用相机,但是客户还是希望,你只要给我一个init函数,然后我就能读你相机传输过来的图像就可以了,这就是Facade设计模式,也像我们数码相机的快门一样,数码相机有很多功能原创 2011-12-04 21:19:27 · 767 阅读 · 0 评论 -
行为模式---之观察者设计模式
observer 模式要解决的问题是:建立一(Subject)对多(Observer)的依赖关系,并且当Subject变化时,依赖这个subject的多个Observer也能够同步改变,比如我们在使用execel画图,做统计分析的时候,我们可以提供 以柱状图或 线条图,或百分比统计图等方法,这些图都依赖同一组数据,当数据变化时,希望这些图型也跟着变化,这就是observer设计模式所要讨论的问题原创 2012-02-23 11:03:36 · 760 阅读 · 0 评论 -
组合和继承的关系
(一)针对接口编程,还不针对实现编程; 类继承是一个通过复用父类功能而扩展应用功能的基本机制,通过抽象类继承,可以实现多态,当继承被正确使用时,所有从抽象类导出的类将共享该抽象类的接口,子类仅添加或重定义操作,而没有隐藏父类的操作,所有的子类都能响应抽象类接口中的请求,从而子类的类型都是抽象类的子类型。 只根据抽象类中定义的接口来操纵对象有以下两个好处:原创 2013-01-01 10:18:28 · 700 阅读 · 0 评论 -
结构型模式 Bridge和Adapter
(一)适配器(Adapater)模式适配器(Adapater)模式已经在10.4 串口通信与设计模式中进行了讲解。在此不在对它进行讲解。http://www.cnblogs.com/kid-li/archive/2006/05/29/412180.html Adapter适配器模式是一种结构型模式,主要应对:由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是,原创 2011-12-05 19:53:45 · 998 阅读 · 0 评论 -
设计要支持变化
在我们做软件架构的时候,设计要支持变化,这一点相当重要,往往我们在设计软件的时候,没有充分考虑这一点,造成软件做好后,当需求稍微变化的时候,软件就是修改,甚至要推倒重来,这样的软件的稳定性和可扩展性都是比较差的;一个不考虑系统变化的设计在将来就有可能需要重新设计,这些变化有可能是类的重新定义和实现,重新设计的结果是很悲剧的,往往会错过商机,最终项目会以失败而告终。举例:上位机和下位机通原创 2013-01-01 12:07:15 · 824 阅读 · 0 评论 -
Command命令模式
定义场景: 现在来看一个场景:对于notepad大家都很熟悉,在我们使用notepad打开一个文档之后,往往做一些操作,如;输入字符(Write)、删除前一个字符(Delete)、撤销刚才的操作(UnDo)。现在我们就用Console程序模拟这个过程。代码实现与结构分析: 在实现代码前先说明实现Command模式需要烤炉的一些问题:1、 一个命令对象应达到何种智能程原创 2013-01-01 09:17:22 · 652 阅读 · 0 评论 -
装饰设计模式 Learn Decorator Design Pattern in Easy Steps
Learn Decorator Design Pattern in Easy Steps转自:http://www.codeproject.com/Articles/99469/Learn-Decorator-Design-Pattern-in-Easy-Steps翻译 2014-05-05 16:08:15 · 1099 阅读 · 0 评论