随笔分类 - 架构与模式
设计模式学习笔记(七)——Adapter适配器模式
摘要:Adapter适配器模式是一种结构型模式,主要应对:由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是,新环境要求的接口是现存对象所不满足的。 《设计模式》中说道:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。 在实际的生活中有很多例子,如:我们常使用的移动硬盘,无论是笔记本硬盘...
阅读全文
设计模式学习笔记(五)——FactoryMethod工厂模式
摘要:刚开始接触设计模式时就常常听到同事提起工厂模式,那时也看过一些人写的Blog,但是往往把注意力放在代码的编写上。在这段时间的学习中慢慢体会到设计模式是用来解决一类问题,而不是某些固定的代码片段。换句话说是解决问题的思想。设计模式可以解决模块的耦合关系,可以解决因需求变动带来的问题。程序在第一次编写时,各个模块之间可能是紧耦合,但是经过代码重构,可以将模块之间变为松耦合。当然,我觉得我们也可以...
阅读全文
设计模式学习笔记(四)——Builder生成器模式
摘要:Builder生成器模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是只:此对象中还含有其它的子对象。Builder模式所面对的情况是:各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法却相对稳定。简单的说:子对象变化较频繁,对算法相对稳定。 这是解决一个复杂对象的创建工作,...
阅读全文
设计模式学习笔记(二)——Singleton单件模式
摘要:这是我写模式设计的第二篇,首先来说说设计模式的分类。 基本的23种设计模式从目的上可分为三种: 1、 创建型(Creational)模式:负责对象创建。 2、 结构型(Structural)模式:处理类与对象间的组合,可以解决一些继承依赖性的问题 3、 行为型(Behavioral)模式:类与对象交互中的职责分配,可以解决组件间如何和交互,隔离变化。 下面来说说单件模式: 首先...
阅读全文
设计模式学习笔记(三)——Abstract Factory抽象工厂模式
摘要:抽象工厂是一种创建型模式,是为了解决实例化时所带来的问题。 我们先来看看是什么问题,有的时候我们会遇到这种情况,我们需要一系列的对象。举个例子,有一系列BMW汽车零部件的对象:轮子bmwwheel,油箱bmwoilbox,在一个管理函数中调用它们,代码如下class BMWWheel{ public BMWWheel(){};} class BMWOilbox{ public BMWO...
阅读全文
设计模式学习笔记(一)——面向对象设计模式与原则
摘要:今天听了《C#面向对象设计模式纵横谈(1):面向对象设计模式与原则》课程。总结了一些笔记。 首先介绍了什么是设计模式:设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。 下面主要讨论面向对象设计模式。 面向对象设计模式描述了类与相互通信的对象之间的组织关系。目的是应对变化、提高复用、减少改变。 那到底什么是对象: 1、从概念层面讲,对象是某种拥有职责的抽象; 2、从规格层面讲,对...
阅读全文
三层体系结构总结
摘要:所谓三层体系结构,是在客户端与数据库之间加入了一个"中间层",也叫组件层。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。从而使开...
阅读全文
委托和事件—一个虚构的故事
摘要:1 委托 从前,在南方的一个异国他乡,有一个叫Peter的勤劳的工人,他对老板(boss)百依百顺,然而他的boss却是个卑鄙多疑的家伙,他坚持要求Peter不断汇报工作进展。由于Peter不希望被boss盯着干活,于是他向boss承诺随时汇报工作进度。Peter通过如下所示的类型化的引用(typed reference)定期回调boss来实现这个承诺: class Work...
阅读全文
德璋PK Martin:“RUP是楷书,XP是草书”对吗?
摘要:在6月6日上海交大举办的“敏捷技术专家论坛上”,软件技术大师Martin Fowler神采奕奕。在1个多小时的精彩演讲和现场编程后,Martin和来自业界的几位敏捷技术专家就诸多敏捷技术的相关话题进行了交流,掌声、笑声、还有观众的频频举手提问,连绵不断,气氛异常火爆。现场共搜集到了观众递交的问题大约3、40条,当然,因为时间的原因,Martin没有在现场一一作答。不过,这些问题将作为Martin的...
阅读全文
.Net中的设计模式——从容自若的CTO
摘要:让我们假设这样一个场景:一年以前,Media公司开发出一套通过电脑接收广播的Radio仿真软件产品。(有这样的产品吗,能真正接收广播的软件?我表示怀疑)这个产品早已投入市场,客户已经在使用了。后来,Media公司将开发重心转移到数字媒体上。于是他们投入了大量的人力物力,最后开发出了完美的媒体播放器软件。这个播放器支持大多数媒体文件,包括音频媒体和视频媒体。该产品取得了成功,也得到了用户的好评。 不...
阅读全文
.Net中的设计模式——Visitor模式的可行与不可爱
摘要:可否使用Visitor模式实现系列二的例子呢?经过我的悉心研究,结论是Visitor模式对于本例而言,可行但不可爱! 我们先看看本例最初的类图: 我们可以将这个类图看作是一个树形结构。那么各个类即可以看作是树的枝叶节点了。这样一说,似乎和Composite模式有些关系了。其实不然,因为我所谓的树枝节点,如AudioMedia类,与MP3及WAV类并非是聚合的关系。认识到这一点很重要,为避免混淆视...
阅读全文
.Net中的设计模式——从Adapter模式到Decorator模式
摘要:一、考察对象的Adapter模式 从上文看到,经过引入Adapter模式,原有的结构得到了改进。但我们还需要从客户的角度分析程序,使结构更加地合理。(这里,我们仅限于考察对象的Adapter模式。类的Adapter模式不存在下述问题。这也印证了一个事实,就是:对象的Adapter模式和类的Adapter模式各有优势,也各有缺点,设计时应根据实际情况考察。) 1、扩展的功能是否合理? 假设用户希望调...
阅读全文
.Net中的设计模式——从实例谈Adapter模式
摘要:在系列一中, RM和MPEG类继承了VideoMedia抽象类,而VideoMedia类又实现了IMedia接口,该接口仅仅提供了Play()方法。冰汽水的意思是希望为RM,MPEG提供与AudioMedia不同的属性和方法。例如,对于视频媒体而言,应该有一个调整画面大小的方法,如Resize()。而这个方法是IMedia接口所不具备的。 那么怎样为RM,MPEG类提供IMedia接口所不具备的R...
阅读全文
.Net中的设计模式——从实例谈OOP、工厂模式和重构
摘要:源代码: 点击这里下载。 有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔,就少了几许灵动的气韵。我们需要给代码带去温暖的阳光,让僵冷的翅膀重新飞起来。结合实例,通过应用OOP、设计模式和重构,你会看到代码是怎样一步一步复活的。 为了更好的理解设计思想,实例尽可能简单化。但随着需求的增加,程序将越来越复杂。此时就有修改设计的必要,重构和设计模式就可以派上用场了。最后当设计渐趋完美后,你...
阅读全文
.Net中的设计模式——Iterator模式
摘要:一、模式概述 在面向对象设计时,我们常常需要辨认对象的职责。理想的状态下,我们希望自己建立的对象只具有一个职责。对象的责任越少,则该对象的稳定性就越好,受到的约束也就越少。职责分离,可以最大限度地减少彼此之间的耦合程度,从而建立一个松散耦合的对象网络。 职责分离的要点是对被分离的职责进行封装,并以抽象的方式建立起彼此之间的关系。在C#中,我们往往将这些可能变化的对象抽象为接口和抽象类,从而将原来...
阅读全文
.Net中的设计模式——Composite模式
摘要:一、模式概述 描述Composite模式的最佳方式莫过于树形图。从抽象类或接口为根节点开始,然后生枝发芽,以形成树枝节点和叶结点。因此,Composite模式通常用来描述部分与整体之间的关系,而通过根节点对该结构的抽象,使得客户端可以将单元素节点与复合元素节点作为相同的对象来看待。 由于Composite模式模糊了单元素和复合元素的区别,就使得我们为这些元素提供相关的操作时,可以有一个统一的接口...
阅读全文
.Net中的设计模式——Factory Method模式
摘要:一、模式概述 也许Factory Method模式是设计模式中应用最广泛的模式。在面向对象的设计中,关于对象的管理是其核心所在,而其中对象的创建则是对象管理的第一步。对象的创建非常简单,在C#中,只需要应用new操作符调用对象的构造函数即可,然而创建对象的时机却非常重要。 首先我们从对象的特征来看,代表抽象关系的类型,如接口和抽象类,是不能创建的,换句话说,我们要创建的对象都是与具体的对象类型...
阅读全文
浙公网安备 33010602011771号