面向对象的原则、模式、语言及框架(五)》的相关内容

LSP替换原则探讨

为了使我写的内容美观,我把它放到“代码”中了。 [code:1]我很早就知道了OOD的一个重要原则是LSP,但当时苦于无法理解。记得当时看阎宏的<Java与模式>一书时,给我弄得很晕。但最近看了<敏捷开发方法>一书,才弄明白一点。希望和网友们一起探讨。 对于LSP的解释如下:子类型必须能够替换掉它们的基类型。而Iiskov在1988年下的定义为:如果每个类型S的对象o1,都 ...
by startunix 2004-05-09 浏览 (3502) 回复 (7) 关键字:

OO—现实与实现的分歧

最近在和朋友做一个小的系统,对系统进行设计时与朋友的理念有所冲突,于是乎就想起了一个老问题,那就是正方形与长方形的继承问题。 OO可以说是现实世界在计算机世界的一个映射,而对于正/长方形,实际上是对正/长方形数学定义在计算机的一个映射的问题。 首先我们来看看在现实中,长方形的定义: 有一个直角的平行四边形是长方形。 再来看看判定定理: 定理1:有三个角是直角的四边形是长方形。 定理2 ...
by calmness 2007-03-04 浏览 (8600) 回复 (32) 关键字:

面向对象设计原则

一个良好的面向对象设计需要遵循一些基本原则,如单一职责原则(SRP)、开放-封闭原则(OCP)、Liskov替换原则(LSP)、依赖倒置原则(DIP)、接口分离原则(ISP)等。 1、 单一职责原则(SRP) 描述:就一个类而言,应该仅有一个引起它变化的原因。 应用:在构造对象时,将对象的不同职责分离至两个或多个类中,确保引起该类变化的原因只有一个。 带来的好处:提高内聚、降低耦合。 个 ...
by dq1618 2007-05-16 浏览 (642) 回复 (0) 关键字: 面向对象设计

Liskov替换原则(LSP)

注:摘自《敏捷软件开发:原则、模式与实践》(Robert C. Martin) 对于LSP可以做如下解释: 子类型(subtype)必须能够替换掉它们的基类型(base type) Barbara Liskov首次写下这个原则是在1988年。她说到, 这里需要如下替换性质: 若对每个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对T编写的程序P中,用o1替换o2后,程序P行为 ...
by zaife 2008-01-15 浏览 (148) 回复 (0) 关键字:

OOD的设计原则

一、开-闭原则 OOD原则的一个基石就是"开-闭原则"(Open-Closed Principle OCP).这个原则最早是由Bertrand Meyer提出,英文的原文是:Software entities should be open for extension,but closed for modification.意思是说,一个软件实体应当对扩展开放,对修改关闭.也就是说,我们在设计一 ...
by 王贵伟 2007-09-19 浏览 (225) 回复 (0) 关键字: 设计模式原则

[转]里氏代换原则

     从上一篇的“开-闭”原则中可以看出,面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化。这个导出要使用继承关系和一个原则:里氏代换原则(Liskov Substitution Principle LSP)。      那么什么是里氏代换原则呢?有个严格的表述,绕口,不好记。还 ...
by aladdin_leon 2006-12-26 浏览 (519) 回复 (0) 关键字: 面向对象

OO的五大原则中的 LSP(zt)

OO的五大原则中的 LSP(里氏替换原则) 现将近期整理的文档提供给大家,这里对LSP做重点的介绍,望对大家有帮助,在学习和使用OO设计的时候,我们应该明白:OO的出现使得软件工程师们能够用更接近真实世界的方法描述软件系统。然而,软件毕竟是建立在抽象层次上的东西,再怎么接近真实,也不能替代真实或被真实替代。 OO设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联,一个可以是另一个 ...
by guohui_fz 2008-01-18 浏览 (146) 回复 (0) 关键字:

关于地震的可预测性

某些官员,抽自己嘴巴吧。 http://www.cq.xinhuanet.com/news/2008-05/14/content_13254443.htm 根据初步分析,汶川大地震属于主震余震型,即12日下午发生大地震后,后续会有很多余震发生,但 整体的地震强度的趋势是呈衰减型的。截至昨日上午8时许,震区发生了5级以上余震多达16次,最大余震等级为6级。今后汶川等地还可能发生一些余震,可能造 ...
by Godlikeme 2008-05-18 浏览 (2541) 回复 (71)

关于D的3个疑问

1.在一个模块中定义的一个全局函数,在其他模块中可以引用么? module a ; void f() { } module b ; import a ; void main() { f() ; //这样可以么?如果可以,怎样限制f()在其他模块总不能调用啊? } 2.我在一个类的私有成员函数中实例化tango.text.convert.layout但是编译器给出 ...
by ant-man 2007-09-22 浏览 (478) 回复 (16)

关于数学结构的介绍性文章

从集合大小的定义到数学结构 异调 一、古怪的定义   “自然数和正偶数,哪一种数更多?”(正偶数是指能被2整除,大于零的自然数。本文中规定0不是自然数。)   “自然数和正偶数一样多,因为将n和2n对应就可以得到自然数到正偶数的一个一一对应。既然每一个不同的自然数都对应而且只对应一个不同的正偶数,所以自然数和正偶数一样多。”许多朋友会这样说,这当然是对的;但是也有许多朋友会觉得奇怪,并 ...
by Trustno1 2007-03-24 浏览 (1208) 回复 (1)

Groovy无痛AOP之旅

Groovy无痛AOP之旅 http://www.infoq.com/cn/articles/aop-with-groovy http://www.infoq.com/cn/articles/aop-with-groovy http://www.infoq.com/cn/articles/aop-with-groovy http://www.infoq.com/cn/articles/aop-wi ...
by shiren1118 2007-11-22 浏览 (369) 回复 (0)

dxpcom v0.1 发布

由于windows上一直遇到DLL加载失败的问题,所以测试是在linux上进行的。 dxpcom v0.1下载地址 包括对xpidl的修改,增加了-m d选项,用来产生d接口。-m dwrap选项还在编写中,生成的代码现在还无法使用。 mozilla/xpcom/*.d大部分是用修改过的xpidl生成的,另有一些是使用htod工具转换的。 有空可以帮我测试一下,目前还不保证转换完全正确,但 ...
by qiezi 2007-04-16 浏览 (10370) 回复 (161)

Scala和设计模式

 在当前软件设计中最流行的要算GoF这本书中提出的各种设计模式。很多人认为,设计模式对于程序语言(特别是c++/Java)本身的不足之处或多或少有一些弥补,不过如果语言足够强大,模式也许没有必要。下面Peter Norvig的一个例子就非常有代表性。在有些语言中,使用设计模式在使代码变得自然和简洁,但是模式本身使用方便性也很重要。不妨让我们来看看Scala(一种类似Ruby/Lisp之类 ...
by yuesc 2008-04-01 浏览 (523) 回复 (0) 关键字:

SPProcPool 0.5 发布

SPProcPool 是一个 linux/unix 平台上的进程池服务器框架,使用 c++ 实现。 在 0.5 版中增加了一个类似 apache worker 的服务器模型。在之前 Leader/Follower 模型的基础上,在每个子进程中使用一个固定大小的线程池来为每个请求服务。这个模型的特点是能够支持较高的并发连接数。 项目主页: http://code.google.com/p/spp ...
by iunknown 2008-01-05 浏览 (353) 回复 (0) 关键字: 进程池 prefork

XJ: 一个扩展Java语言的方案

Java历来是一种以不变应万变的语言。在Java 5中,annotation的引入使得Java在某些特殊的应用场合(如企业应用)中能够进行定制。Annotations 可被看作是用Java核心技术来定义的"领域特定语言"(Domain Specific Languages,DSLs)。 Annotation本质上是一种 name-value 形式的绑定,仅限于它们所能表达的意义。它们不能定义新的 ...
by levis2000 2008-04-16 浏览 (1084) 回复 (3) 关键字: extensible java

推荐知识库条目

Comming soon