随笔分类 - C#设计模式
摘要:11.Façade外观(结构型模式)李建忠上海祝成科技高级培训讲师系统的复杂度假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。PublicclassWheel车轮{publicvoidWAction1(){....}publicvoidWAction2(){....}}publicclassEngine引擎{pu...
阅读全文
摘要:9.Composite组合(结构型模式)李建忠海祝成科技高级培训讲师对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即它们在充当对象的同时,又是其他对象的容器。publicclassSingleBox:IBox{publicvoidprocess(){……}}publicclassContainerB...
阅读全文
摘要:7.Adapter适配器(结构型模式)李建忠上海祝成科技高级培训讲师适配(转换)的概念无处不在……适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种“迁...
阅读全文
摘要:6.Prototype原型(创建型模式)李建忠上海祝成科技高级培训讲师依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。–抽象A直接依赖于实现细节b–抽象A依赖于抽象B,实现细节b依赖于抽象B动机(Motivation)在软件系统中,经常面临着“某些结构复杂的对象“的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有...
阅读全文
摘要:5.FactoryMethod工厂方法(创建型模式)李建忠上海祝成科技高级培训讲师从耦合关系谈起耦合关系直接决定着软件面对变化时的行为–模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。–模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。动机(Motivation)在软件系统中,经常面临着“某个对象...
阅读全文
摘要:3.AbstractFactory抽象工厂(创建型模式)李建忠上海祝成科技高级培训讲师new的问题常规的对象创建方法://创建一个Road对象Roadroad=newRoad();new的问题:–实现依赖,不能应对“具体实例化类型”的变化。解决思路:–封装变化点——哪里变化,封装哪里。–潜台词:如果没有变化,当然不...
阅读全文
摘要:4.Builder生成器(创建型模式)李建忠上海祝成科技高级培训讲师Builder模式的缘起•假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。•如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正……动机(Motivation)在软件系统中,有时候面临着“一个复杂对象R...
阅读全文
摘要:单件模式(Singleton Pattern)摘自李会军博客http://terrylee.cnblogs.com/archive/2005/12/09/293509.html概述Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例...
阅读全文
摘要:《面向对象设计模式与原则》李建忠设计模式简介每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。——ChristopherAlexander设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。人是一个经验性的动物GoF23种设计模式•历...
阅读全文