摘要:把自己归类为大牛是自己的权利,所谓一花一世界,一叶一菩提,就想我相信凤姐绝对不是故意装的,客观世界折射在她内心就是这个样子。认为别人错误百出也是可以的,道理同上。但是不指出错在什么地方,仅以一句“就这水平”敷衍过去,继续沉浸在 I am big cow 的意境中,不给我们菜鸟共同进步的机会,扼杀我们“someday I can become a big cow&...
阅读全文
随笔分类 - 模式,软件设计
摘要:首先明晰一下“面向对象”概念,这个当初不好的翻译误导了很多人,英文叫“Object-Oriented”,什么意思呢就是“以客观事物(object)的形式来组织程序”。就这么简单,比如客观上我们观察到 人 为一个个体,那么我们在组织程序的时候就按照 人 来组织实体对象,即声明一个 Person 的类来使用。我们为什么需要面向对象...
阅读全文
摘要:最近看了园子里的面向对象与过程之争,忍不住想说两句,因为我感觉这里面对OO存在一些关键误解,不说出来真的是难受。我有什么说错的地方,也欢迎大家指出。首先,题目引用的是《人月神话》中的典故,面向对象是在软件危机的大背景下产生的,被作者称为“铜弹”,相对于作者理想中的至今仍未出现的“银弹”来说,我觉得已经是一种赞誉了。开发,说到底就是人与机器的对话。这里...
阅读全文
摘要:业务逻辑层,也可以叫业务实体层,就是由各个业务实体构成的。同志们可以参考Pet Shop40的业务逻辑层,里面都是诸多实体,举一个例子products:usingSystem.Collections.Generic;usingPetShop.Model;usingPetShop.IDAL;namespacePetShop.BLL{///<summary>///Abusinesscomp...
阅读全文
摘要://Visitorpattern--RealWorldexampleusingSystem;usingSystem.Collections;namespaceDoFactory.GangOfFour.Visitor.RealWorld{//MainAppstartupapplicationclassMainApp{staticvoidMain(){//Setupemployeecollection...
阅读全文
摘要:前面已经介绍过了Strategy,那就基于2者的区别开始介绍了,这样可以介绍有助于掌握要点。State 与 Strategy 都有一个上下文,都有委托给一个据有几个派生类的多态基类。不同之处在于:State 的派生类持有指回上下文的引用,可以使用这个引用通过一定逻辑改变上下文中的State,也就是改变实现的方法。Strategy 不存在这样的引用,改变什么实现方法由人为指定。一句话概括之,Stat...
阅读全文
摘要:Memento 提供了保存对象状态的能力,似乎没有什么好说的。C#codeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1//Memento23//Intent:"Withoutviolatingencapsulation,captureandext...
阅读全文
摘要:这里要讲的是Mediator中介者模式,题目和它有什么关系呢,别急,且慢慢道来。查阅一下cnblog,很多作者对Mediator模式一般有如下叙述:a. 中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。b. 调停者模式将多对多的相互作用转化为一对多的相互作用c. 一个对象使用Mediator模式,与其他与其通信的对象解偶, 提高了对象的复用性。为了说...
阅读全文
摘要:前两天介绍了几个不太常用的模式,终于迎来了Mediator。(Mediator 常用吗,也许只是感觉它更像一个模式罢了)下面到代码结束都是Copy来的,讨论在后面。调停者模式(中介模式):调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多...
阅读全文
摘要:迭代器主要适用于:1,访问一个聚合对象的内容而无需暴露它的内部表示。2,支持对局和对象的多种遍历。3,为遍历不同的聚合结构提供一个统一的接口。类图和代码:C#CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;usingSy...
阅读全文
摘要:解释器只是翻译文本语言? 看了一些例子好像是这样:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language. C#CodeCode highlightin...
阅读全文
摘要:行为模式中的decorator?先上代码和图,总结后面讨论。C#代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;namespaceDoFactory.GangOfFour.Chain.Structural{//MainApp...
阅读全文
摘要:构成一棵树?是的,构成一棵树。但这不是关键,关键是1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。简言之对客户来说,并不知道“树”,而只看到“根”。树可以无限扩展,根自岿然不动(不...
阅读全文
摘要:prototype 是我们介绍的最后一个创建性模式。还是结合代码好说话C#代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;namespaceDoFactory.GangOfFour.Prototype.Structural{...
阅读全文
摘要:Builder 用于下面2种情况下:1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2、当构造过程必须允许被构造的对象有不同的表示时。不明白别着急,结合代码类图逐一解释。C#codeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-...
阅读全文
摘要:当初初识Command,我真的不知道它有什么特别之处,看看它的代码:C#CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;namespaceDoFactory.GangOfFour.Command.Structural{/...
阅读全文
摘要:template 会让你想到 strategy:It should be clear how Strategy and Template Method solve the same problem. The problem is simply to separate a high-level algorithm from a lower-level algorithm in such a way ...
阅读全文
摘要:Observer 模式的意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。Observer又分“推”和“拉”2种。两者的区别如下,推模式是当通知消息来之时,把所有相关信息都通过参数的形式“推给”观察者。而拉模式是当通知消息来之时,通知的函数不带任何相关的信息,而是要观...
阅读全文
摘要:Singleton 是比较常见的设计模式了,它的实现很简单,真正具有挑战的是:你如何使用Singleton?Singleton的目的: 保证应用只有一个全局唯一的实例,并且提供一个访问它的全局访问点。Singleton的实现要点如下:1,私有构造函数防止在外部实例化。2,保存唯一实例的静态的私有变量。3,初始化并获得唯一实例的静态方法。这里有一个问题:能否使用全局变量替代Singleton模式?如...
阅读全文
摘要:我觉得Decorator是比较透着灵气的设计模式,至于这句话怎么理解我也不好解释,呵呵,切入正题吧。先看类图了:注意到图中的一个环了吗,就是Decorator继承自Component,然后又引用Component的那个环路,就是它可以让我们不断动态的添加新的功能到Component 定义的一个对象。这也正是Decorator要解决的问题,为一个对象动态连接附加的职责。下面看代码:假设一个Sales...
阅读全文