随笔分类 -  软件设计与架构

软件设计和架构相关文章随笔
摘要:using System;using System.Text;using System.Collections.Generic;namespace 状态模式{ /* * 状态模式意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 * * 状态模式使用场景:1、当一个对象行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时 * 2、状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化 * */ ///... 阅读全文
posted @ 2011-03-22 22:39 日月之明 阅读(438) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Text;namespace 职责链模式{ /* * 职责链模式意图:是对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直道一个对象处理它为止。 * * 职责链模式使用场景:1、有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定 * 2、在不明确指定接受者的情况下,向多个对象中提交一个请求 * ... 阅读全文
posted @ 2011-03-22 22:38 日月之明 阅读(274) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Text;namespace 中介者模式{ /* * 中介者模式意图:用一个中介者对象将一些列对象交互封装,从而降低这些对象间的耦合性并且可以独立地改变对象间的交互关系。 * * 中介者模式实现要点:1、添加中间对象(中介者)对需要交互的对象的行为进行管理 * 2、通过中介方法,实现对象间的交互,从而实现对象间交互的松散耦合。 * * 中介者... 阅读全文
posted @ 2011-03-22 22:38 日月之明 阅读(349) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;namespace 模板方法模式{ /* * 模板方法的意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 * * 模板方法实现要点:1、Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法,纯虚方法),但一般推荐将它们设置为protected方法 * * 模板方法优点:1、封装不变部分... 阅读全文
posted @ 2011-03-22 22:37 日月之明 阅读(228) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;namespace 命令模式{ /* * 命令模式意图:见一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能 * * 命令模式优点:1、实现类间的解调,调用者与接收者角色之间没有任何依赖关系,调用者实现功能时只需调用Command抽象类的execute方法就可,而无需了解到底是哪个接受者执行 * 2、实现Command接口的具体命令对... 阅读全文
posted @ 2011-03-22 22:37 日月之明 阅读(354) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace 解释器模式{ /* * 解释器模式意图:给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 * * 解释器模式使用场景:1、当一个语言需要解释执行,并且系统将该语言中的句子表示为一个抽象语法树时 * 2、语法的构建复杂,且语法相关的类层次庞大且难以管理,使用解释器模式构建语法... 阅读全文
posted @ 2011-03-22 22:36 日月之明 阅读(217) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;namespace 观察者模式{ /* * 观察者模式意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 * 观察者模式实现要点:1、需要在状态对象通知者建立容器,管理被通知对象 * 2、实现对容器进行管理 * 3、实现核心的更新方法 * ... 阅读全文
posted @ 2011-03-22 22:35 日月之明 阅读(314) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace 访问者模式{ /* * 访问模式意图:表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。 * * 访问模式实现要点:1、通过一个稳定的管理容器管理所要访问的元素 * * 访问者模式适用场景:1、当有一个效果上的密封类层次 * ... 阅读全文
posted @ 2011-03-22 22:34 日月之明 阅读(219) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;using System.Collections;namespace 迭代模式{ /* * 迭代模式意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 * * 迭代模式实现要点:1、迭代抽象:访问一个聚合对象的内容而无需暴露它的内部表示。 * 2、迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行 * ... 阅读全文
posted @ 2011-03-22 22:32 日月之明 阅读(293) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;namespace 策略模式{ /* * 策略模式意图:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。 * * 策略模式实现要点:1、策略调用类中一般会包含一条或几条if或switch 语句,在这些语句中实现具体策略的调用 * 2、使用扩展方法,可以直接定义新的策略,而不依赖原来所支持的类 * ... 阅读全文
posted @ 2011-03-22 22:31 日月之明 阅读(265) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;namespace 备忘录模式{ /* * 备忘录模式意图:用一个中介者对象将一些列对象交互封装,从而降低这些对象间的耦合性并且可以独立地改变对象间的交互关系 */ ///<summary> /// ///</summary>publicclass Originator { privatestring state; publicstring State { ... 阅读全文
posted @ 2011-03-22 22:29 日月之明 阅读(1268) 评论(3) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 原型模式{ /* * 原型模式意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 * 原型模式实现要点:1、使用原型管理器,体现在一个系统中原型数目不固定时,可以动态的创建和销毁 * 2、实现克隆操作,在.NET中可以使用Object类的MemberwiseClone()方法来实现对象的浅表拷贝或通过序列化的方式来实现深拷贝。 ... 阅读全文
posted @ 2011-03-04 22:58 日月之明 阅读(345) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象工厂模式{ /* * 抽象工厂模式的意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 * 抽象工厂模式的实现技巧:1、将抽象工厂建产品对象的创建延迟到它的具体工厂子类。 * 2、如果没有应对“多系列对象的”需求变化,则没有必要使用抽象工厂,这是使用简单的静态工厂就可以胜任了。 * ... 阅读全文
posted @ 2011-03-04 22:57 日月之明 阅读(411) 评论(0) 推荐(0)
摘要:using System;using System.Text;using System.Collections.Generic;using System.Linq;namespace 建造者模式{ /* * 建造者模式意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 * * 建造者模式优点:1、建造者模式的使用使得产品内部表象可以独立的变化,使客户端不必知道产品内部组成细节。 * 2、每一个Builder都相对独立,而与其它的Builder无关。 * ... 阅读全文
posted @ 2011-03-04 22:57 日月之明 阅读(313) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 简单工厂模式{ public class SimpleFactory { //将此函数改为静态的则变为了静态工厂方法 public IProduct CreateProduct(string productName) { switch (productName) { cas... 阅读全文
posted @ 2011-03-04 22:56 日月之明 阅读(340) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 工厂方法模式{ /* * 工厂方法模式意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类 * 工厂方法模式实现要点:1、工厂模式有两种情况:一是Creator类是一个抽象类且它不提供它所声明的工厂方法的实现; * 二是Creator是一个具体类,且它... 阅读全文
posted @ 2011-03-04 22:55 日月之明 阅读(494) 评论(0) 推荐(1)
摘要:using System;using System.Text;using System.Collections.Generic;using System.Collections;namespace 迭代模式{ /* * 迭代模式意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 * * 迭代模式实现要点:1、迭代抽象:访问一个聚合对象的内容而无需暴露它的内部表示。 * 2、迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行 * ... 阅读全文
posted @ 2011-03-04 22:52 日月之明 阅读(733) 评论(0) 推荐(0)
摘要:1、抽象工厂模式(abstract factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。当需要产生产品对象家族时使用此模式。2、工厂方法模式(factory method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化,即将一个类的实例延迟到其子类。延迟子类的实例化。3、创建者模式(builder)见一个负责对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。需要创建一个组合对象时使用。4、原型模式(protype)用原型实例指定出阿健对象的种类并且通过拷贝这个原型来创建新的对象。被实例化的类需要变化时使用此模式。5、单件模式(singlet 阅读全文
posted @ 2010-11-14 22:46 日月之明 阅读(603) 评论(0) 推荐(0)
摘要:一、设计模式原则:1、单一职责原则:具体描述:应该有且仅有一个原因引起类的变更,即一个方法尽可能只做一件事,即尽可能只实现一个功能,而接口尽可能只负责一类功能描述,而类的设计尽量做到只有一个原因引起变化。实现好处:降低类复杂性,实现什么职责都有清晰明确的定义,提高了可读性,更进一步地提高可维护性,且降低了变更引起的风险。以为一个变化只有一个原因引起,那变化引起的变更只修改一个地方便可。2、里氏替换原则:具体描述:所有引用基类的地方必须能透明地使用期之类的对象。即只要父类能出现的地方,子类就可以出现,且替换为子类不会发生任何错误或异常,而使用者可能根本不需要知道是父类还是子类但是反过来就不可以, 阅读全文
posted @ 2010-11-14 22:42 日月之明 阅读(741) 评论(0) 推荐(2)