文章分类 - Design & Pattern
摘要:什么是架构 软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。 ANSI/IEEE 610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及知道上述内容...
阅读全文
摘要:The GOF Template pattern coupled with .NET 2.0 Framework generics provides an awesome synergistic alliance. This article demonstrates how to drastically reduce the amount of code required in buildin...
阅读全文
摘要:《解剖PetShop》系列之二 二、PetShop数据访问层之数据库访问设计在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。从本部分开始,我将依次对各层进行代码级的分析,以求获得更加细致而深入的理解。在PetShop 4.0中,由于引入了ASP.Net 2.0的一些新特色,所以数据层的内容也更加的广泛和复杂,包括:数据库访问、Messaging、MemberShip、Pr...
阅读全文
摘要:一、模式概述 在面向对象设计时,我们常常需要辨认对象的职责。理想的状态下,我们希望自己建立的对象只具有一个职责。对象的责任越少,则该对象的稳定性就越好,受到的约束也就越少。职责分离,可以最大限度地减少彼此之间的耦合程度,从而建立一个松散耦合的对象网络。 职责分离的要点是对被分离的职责进行封装,并以抽象的方式建立起彼此之间的关系。在C#中,我们往往将这些可能变化的对象抽象为接口和抽象类,从而将原来的...
阅读全文
摘要:一、模式概述 描述Composite模式的最佳方式莫过于树形图。从抽象类或接口为根节点开始,然后生枝发芽,以形成树枝节点和叶结点。因此,Composite模式通常用来描述部分与整体之间的关系,而通过根节点对该结构的抽象,使得客户端可以将单元素节点与复合元素节点作为相同的对象来看待。 由于Composite模式模糊了单元素和复合元素的区别,就使得我们为这些元素提供相关的操作时,可以有一个统一的接口。...
阅读全文
摘要:一、模式概述 也许Factory Method模式是设计模式中应用最广泛的模式。在面向对象的设计中,关于对象的管理是其核心所在,而其中对象的创建则是对象管理的第一步。对象的创建非常简单,在C#中,只需要应用new操作符调用对象的构造函数即可,然而创建对象的时机却非常重要。 首先我们从对象的特征来看,代表抽象关系的类型,如接口和抽象类,是不能创建的,换句话说,我们要创建的对象都是与具体的对象类型有...
阅读全文
摘要:This is a review of the Visitor Design Pattern, in the light of .NET and C#, as well as how it can be used and expanded in this platform.Classes and collections of classes are often used in OO progr...
阅读全文
摘要:PrintEmail Discuss Add to ProjectTrackbacksBlog this Bookmark with del.icio.us by Amit Goel08/11/2003 Software architects generally think in terms of high-level abstr...
阅读全文
摘要:This article discusses: Common design patterns used in .NET Framework classes Patterns used to implement the ASP.NET programming model and request pipeline How patterns make programming tas...
阅读全文
摘要:我的工作需要写一个话单转换工具,在写这个工具的过程中,发现整个实现恰恰可以说是策略模式最好的体现。也许用这个例子来说明策略模式的应用,最是合适。该话单转换工具的目的,是将某个服务提供商的话单文本文件,转换为另一个服务提供商的话单文本文件。如将联通的话单格式转换为移动的话单格式。而话单转换工具的要求,是希望能实现多个服务提供商话单文本文件的互相转换。 我们来分析一下任务。首先,各种服务提供商的话单格...
阅读全文
摘要:让我们假设这样一个场景:一年以前,Media公司开发出一套通过电脑接收广播的Radio仿真软件产品。(有这样的产品吗,能真正接收广播的软件?我表示怀疑)这个产品早已投入市场,客户已经在使用了。后来,Media公司将开发重心转移到数字媒体上。于是他们投入了大量的人力物力,最后开发出了完美的媒体播放器软件。这个播放器支持大多数媒体文件,包括音频媒体和视频媒体。该产品取得了成功,也得到了用户的好评。 不...
阅读全文
摘要:Idior一再说,对于系列二的例子,使用Visitor模式是可行的。我仔细地思考了一下,结论是Visitor模式对于本例而言,可行但不可爱! 我们先看看本例最初的类图: 我们可以将这个类图看作是一个树形结构。那么各个类即可以看作是树的枝叶节点了。这样一说,似乎和Composite模式有些关系了。其实不然,因为我所谓的树枝节点,如AudioMedia类,与MP3及WAV类并非是聚合的关系。认识到这一...
阅读全文
摘要:《让僵冷的翅膀飞起来》系列之一——从实例谈OOP、工厂模式和重构 《让僵冷的翅膀飞起来》系列之二——从实例谈Adapter模式 一、 考察对象的Adapter模式 从上文看到,经过引入Adapter模式,原有的结构得到了改进。但我们还需要从客户的角度分析程序,使结构更加地合理。(这里,我们仅限于考察对象的Adapter模式。类的Adapter模式不存在下述问题。这也印证了一个事实,就是:对象的Ad...
阅读全文
摘要:《让僵冷的翅膀飞起来》系列之一——从实例谈OOP、工厂模式和重构 《让僵冷的翅膀飞起来》系列之三——从Adapter模式到Decorator模式 在拙文《系列之一——从实例谈OOP、工厂模式和重构》中,冰汽水提出了一个问题,“如果我想让RM, MPEG类具有自己的一些特定属性的话怎么做呢?”原来的RM和MPEG类继承了VideoMedia抽象类,而VideoMedia类又实现了IMedia接口,该...
阅读全文
摘要:本周看了中央电视台的《对话》栏目,节目对三星CEO尹钟龙进行了访谈。其中,现场一位女士的一句话令我印象深刻。她提到一个企业的运行价值链,共分为三步:首先是发现价值,找到目标市场;第二步是生产价值,将高质量的产品生产出来;最后是保护价值或收获价值,做好品牌。 怎么理解呢?这位女士以Nike作比喻。第一步是设计Nike鞋,这就是发现价值,可能获得100美元的价值;然后再拿到中国来生产,大约是10美元;...
阅读全文
摘要:前言:XP中有个准则,就是只做目前你需要做的。例如,我需要加法运算,你就没有必要实现乘法运算,因为这不是客户需要的。所以在开发中,我们可以不去考虑程序对于未来的扩展性。“简单最好!”那么,是否就不需要设计了呢?对于设计模式而言,是否也可以不去了解了呢?答案当然是否定的。因为客户的需求是“与时俱进”的,现在不实现,并不等于今后不实现。在实现中,不管是重构,还是重新设计,通过应用设计模式,能令你如虎添...
阅读全文
摘要:AssertionsAssertions are central to unit testing in any of the xUnit frameworks, and NUnit is no exception. NUnit provides a rich set of assertions as static methods of the Assert class. If an asserti...
阅读全文
摘要:《让僵冷的翅膀飞起来》系列之二——从实例谈Adapter模式 《让僵冷的翅膀飞起来》系列之三——从Adapter模式到Decorator模式 有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔,就少了几许灵动的气韵。我们需要给代码带去温暖的阳光,让僵冷的翅膀重新飞起来。结合实例,通过应用OOP、设计模式和重构,你会看到代码是怎样一步一步复活的。 为了更好的理解设计思想,实例尽可能简单化。...
阅读全文