
设计模式
文章平均质量分 77
勇赴
这个作者很懒,什么都没留下…
展开
-
设计原则之开闭原则(一)
开闭原则是设计原则基础的基础,其它原则均围绕开闭原则进行展开。开闭原则也就是一个软件实体应当对扩展开放,但对修改关闭。满足了开闭原则的设计,我们的系统将达到在设计稳定的基础上,方便的对软件进行扩展,插入新的功能模块的目的。 怎么样做的开闭原则呢?抽象化是关键,也是我们经常听到的“面象接口编程”,具体一点就是声明的变量的类型、函数的参数类型、函数的返回类型等要尽量使用抽象类和原创 2009-07-05 02:05:00 · 1211 阅读 · 0 评论 -
我写我的
想在Blog上写点东西,写了半天,一点"发表文章”什么提示没有就全丢了,好不郁闷啊! 今天脑子里突然冒出一个很奇怪的问题,我写Blog到底是给谁看的?想了半天,答案是主要给自己看。网上别人爱写什么写什么与我无关,我该写我的写我的,所以我在“东拉西扯”里面的那篇“写博原则”现在看来的确是在扯蛋。因为我是写给自己看的,所以看到我Blog的朋友,你们要清楚,我的Blog并不想给你们原创 2009-07-04 18:16:00 · 517 阅读 · 0 评论 -
软件系统设计的核心
当然我现在所说的内容都是建立在面向对象基础之上的,也就是用面向对象的语言Java或C#设计出来的的软件系统。那么软件系统设计的核心问题是什么呢?那就是如何让系统易于维护并且复用性较好,让软件系统具有可维护性和可复用性,是我们的系统要达到的目标。要完成上述的目标,并不是一件特别容易的事情。一个完成了上述目标的软件系统必然具备可扩展性、灵活性、可插入性这三个特质。如何才能具备这三个特质呢?当然是提原创 2009-07-04 20:00:00 · 1742 阅读 · 0 评论 -
里氏代换和依赖倒转原则(二)
上节说到开闭原则的关键是抽象化,有了抽象化就要有具体化,从抽象化到具体化的过程,其实也是一个继承关系确立的过程。无论是“实现继承”还是“接口继承”,在这个过程中,我们都要以里氏代换原则为指导:任何基类可以出现的地方,子类一定可以出现。依赖倒转原则也有关于抽象和具体的描述:要依赖于抽象,不要依赖于具体。这里可以简单点,把他看成是“要针对接口编程,不要针对实现编程”,针对接口编程也就是说,应当原创 2009-07-05 11:16:00 · 1099 阅读 · 0 评论 -
C#对观察者(Observer)模式的支持(一)
首先先让我们了解一下什么是观察者模式,观察者模式是对象的行为型模式,又叫依赖/从属者模式、发布-订阅模式、源-监听模式。观察者模式:定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新(GOF)。如我们的项目中有一个邮件系统,当发送邮件时可能需要发送手机短信和RTX信息通知邮件接收者,这时就可以用观察者模式进行设计,如果以后还需要增加第三种原创 2009-10-28 00:24:00 · 1016 阅读 · 0 评论 -
C#对观察者(Observer)模式的支持(二)
.Net为我们应用事件定义了标准的模式,我们在应用过程中应遵守定义事件的规则。一个标准的事件模式包括四个方面的内容:1、 一个继承自System.EventArgs类型的事件信息类,并且这个类的名称以EventArgs结尾,如SendMailEventArgs,这个类负责保存事件源发送给事件监听者的信息。如果事件源不需要给事件监听者传递额外的信息,可以直接使用EventAr原创 2009-10-28 20:26:00 · 817 阅读 · 0 评论 -
从is和as想到Is-A、Has-A和Use-A(二)
C#中的is和as操作符,分别是做类型兼容检查和类型转换用的。而Is-A,Has-A,Use-A则是用来描述类与类之间关系的。简单的说Is-A代表继承,Has-A代表合成,Use-A代表依赖。 Is-A继承关系:“表示类与类之间的继承关系、接口与接口之间的继承的关系以及类对接口实现的关系”。如:public abstract class A{ ……原创 2009-10-30 20:48:00 · 3537 阅读 · 1 评论 -
从is和as想到Is-A、Has-A和Use-A(一)
面向对象的编程语言(如C#、Java),都不可避免要在编写代码的过程中进行类型转换。类型转换虽然看似很简单,但在实际工作中仍是一件很让人头痛的事儿,特别是初学者,很多时候类型转换真正转起来的时候会很晕(我曾晕过,哈哈)。C#为我们做引用类型的转换提供了一个操作符as,as只能操作引用类型,还有一个用于类型判断的is,is操作符可以操作值类型和操作类型。关于值类型转换,值类型与引用类型原创 2009-10-31 21:57:00 · 2420 阅读 · 0 评论 -
对上传附件类的扩展——装饰模式
面向对象设计原则“合成/聚合复用原则”指出:尽量不要使用继承,要尽量使用合成/聚合。 如果对系统功能扩展有很多种方法,可以直接改源码,如果改完之后出现的Bug,排错起来应该相当困难,因为很不容易清楚到底是直接新加入的代码出的错,还是新加入的代码导致原有代码发生异常;也可以用继承,直接继承原有的类,再子类中增加新的功能,再或者直接写个全新的类替换原有(有点疯狂)。原创 2009-11-02 22:34:00 · 671 阅读 · 0 评论