随笔分类 -  设计模式

摘要:UML定义的关系主要有:泛化、实现、依赖、关联、聚合、组合,这六种关系紧密程度依次加强,分别看一下 1、泛化 概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在程序中是通过继承类实现的。比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设 阅读全文
posted @ 2016-06-23 14:46 ice_baili 阅读(467) 评论(0) 推荐(1) 编辑
摘要:一、面向对象的特性 三个基本的特性:封装、继承与多态。 1、封装面向对象编程核心思想这一就是就是将数据和对数据的操作封装在一起.通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如类的概念. 2、继承继承体现了一种先进的编程模式.子类可以继承父类的属性和功能,即子类继承了父类所具有的数据和数 阅读全文
posted @ 2015-08-14 11:25 ice_baili 阅读(462) 评论(0) 推荐(0) 编辑
摘要:1.特点:若某特定问题发生的频率足够高时考虑,需定义文法表示与解释器本身。2.概念:在软件开发特别是DSL开发中常常需要使用一些相对较复杂的业务语言,如果业务语言使用频率足够高,且使用普通的编程模式来实现会导致非常复杂的变化,那么就可以考虑使用解释器模式构建一个解释器对复杂的业务语言进行翻译。这种做... 阅读全文
posted @ 2015-08-14 10:58 ice_baili 阅读(346) 评论(0) 推荐(0) 编辑
摘要:1.特点:用树状结构表示“整体-部分”的层次关系,使单个对象(叶节点)与组合对象(枝节点)的使用具有一致性。2.概念:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。3.类图:4.程序实现:/// /// 一个抽象构件,声明一个接口用... 阅读全文
posted @ 2015-08-14 10:44 ice_baili 阅读(268) 评论(0) 推荐(0) 编辑
摘要:1.特点:子系统的高层接口,避免两个类直接关系的第三者。2.概念:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。3.类图:4.程序实现:/// /// 子系统中的一个类 /// public class SubSystem... 阅读全文
posted @ 2015-08-14 10:33 ice_baili 阅读(215) 评论(0) 推荐(0) 编辑
摘要:1.特点:在初始化信息不发生变化时考虑。2.概念:通过复制一个已经存在的实例来创建一个新的实例。被复制的实例被称为原型,这个原型是可定制的。3.类图:4.程序实现:/// /// 实现了ICloneable接口的简历类 /// public class Resume:IClon... 阅读全文
posted @ 2015-08-14 10:19 ice_baili 阅读(178) 评论(0) 推荐(0) 编辑
摘要:1.特点:通过代理访问真实对象。 2.概念:为其它对象提供一种代理以控制对这个对象的访问。 3.类图: 4.程序实现: 阅读全文
posted @ 2015-08-14 10:02 ice_baili 阅读(228) 评论(0) 推荐(0) 编辑
摘要:1.特点:当对象内状态改变而执行不同操作时考虑,状态转移逻辑不在if/switch中,而在各子类之间,增/改状态和状态转换较容易。2.概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。3.类图:4.程序实现:/// /// Context类,维护一个Concret... 阅读全文
posted @ 2015-08-14 09:49 ice_baili 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1.特点:一般先用工厂方法解决对象创建问题。2.概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。3.类图:4.程序实现:/// /// 抽象工厂,声明了一个创建Product的方法 /// public abstract clas... 阅读全文
posted @ 2015-08-14 09:42 ice_baili 阅读(141) 评论(0) 推荐(0) 编辑
摘要:1.特点:当工厂方法无法满足多系列问题时,再重构为抽象工厂。2.概念:抽象工厂模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对应的系列来创建一个具体的工厂类别。3.类图:4.程序实现:/// /// 抽象工厂类 /// pub... 阅读全文
posted @ 2015-08-13 20:33 ice_baili 阅读(155) 评论(0) 推荐(0) 编辑
摘要:1.特点:只需一个实例时考虑。2.概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。3.类图:4.程序实现: 1)懒汉式:对于懒汉模式,我们可以这样理解:该单例类非常懒,只有在自身需要的时候才会行动,从来不知道及早做好准备。它在需要对象的时候,才判断是否已有对象,如果没有就立即创建一个对象... 阅读全文
posted @ 2015-08-13 19:55 ice_baili 阅读(380) 评论(0) 推荐(0) 编辑
摘要:1.特点:让接口不相容的类能协同工作。(亡羊补牢)2.概念:适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。3.类图:4.程序实现:/// /// 定义客户端期待的接口 /// public c... 阅读全文
posted @ 2015-08-13 19:39 ice_baili 阅读(204) 评论(0) 推荐(0) 编辑
摘要:1.特点:多个部件的建造实现相同,只是所需部件、建造顺序不同时考虑。2.概念:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。3.类图:说明:1) builder:抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对... 阅读全文
posted @ 2015-08-07 13:52 ice_baili 阅读(189) 评论(0) 推荐(0) 编辑
摘要:1.特点:一对多依赖关系,一端变化、多端得到通知并自动更新。(目标与观察者可实现弱耦合)2.概念:有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。3.类图:4.代码实现... 阅读全文
posted @ 2015-08-07 12:37 ice_baili 阅读(161) 评论(0) 推荐(0) 编辑
摘要:1.特点:将一系列算法逐个封装并可相互替换,易于切换、理解、扩展。 优点:1)提供了管理相关算法族的方法。2)可以避免使用多重条件转移语句。缺点:1)必须知道所有的具体策略类及它们的区别.2)生成许多的策略类。2.概念:3.类图:4.实现代码:/// /// 策略类,定义了所有支持的算法... 阅读全文
posted @ 2015-08-07 12:36 ice_baili 阅读(167) 评论(0) 推荐(0) 编辑
摘要:1.特点:将对集合的访问与遍历从集合对象中分离出来到迭代器中。2.概念:迭代器模式(Iterator)就是分离了聚合对象的遍历行为,抽象出一个迭代器来负责这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部数据。3.类图:4.程序实现// 抽象聚合类 public interf... 阅读全文
posted @ 2015-08-07 12:34 ice_baili 阅读(187) 评论(0) 推荐(0) 编辑
摘要:1.特点:将请求发送者与具体实现者解耦,可对请求排列、取消、重做,支持事务。(多请求,单处理)2.概念:属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数... 阅读全文
posted @ 2015-08-07 12:32 ice_baili 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1.特点:将处理者排成链,沿链传递请求。(单请求,多处理)2.概念:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。3.类图:4.程序实现:using System;using System.Collec... 阅读全文
posted @ 2015-08-07 12:31 ice_baili 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1.特点:当Element较稳定、Visitor易增加时考虑。(朋友在精不在多)2.概念:表示一个作用于某对象结构中的各个元素的操作。它使你可以在不改变各个元素的类的前提下定义作用于这些元素的新操作。3.类图:4.程序实现:public abstract class Emploree { ... 阅读全文
posted @ 2015-08-07 12:29 ice_baili 阅读(196) 评论(0) 推荐(0) 编辑
摘要:1.特点:由中介封装一系列对象交互,减少对象间耦合,利于复用。(朋友多)2.概念:定义一个中介对象来封装系列对象之间的交互。3.类图:4.程序实现:using System;using System.Collections.Generic;using System.Linq;using System... 阅读全文
posted @ 2015-08-07 12:27 ice_baili 阅读(156) 评论(0) 推荐(0) 编辑