从面向对象到设计模式

原创 2006年05月23日 16:10:00

设计面向对象软件比较困难,但是设计可复用的面向对象软件就更加困难了.随着面向对象技术的发展,最早的面向对象思想已经落伍了.我们知道面向对象主要内容就是:"封装","继承","多态".这个没有错.主要是对这三个主要内容的看法,现在和过去已经不同了,下面就我看的一些书从中得到感悟共享给大家.有异意的朋友,欢迎PK.
     封装,以前包括在大学的时候,老师给的直接的解说就是数据隐藏,而我现在要说的是这个解说站的角度太低了,也太片面了.我要给的解释是隐藏一切可以隐藏的东西,这个听起来是不是有些空洞了.好那我举个例子,一个抽象类是否藏了具体类的实现,从这里看类也可以隐藏;一个代理对象是否隐藏了一个被代理对象的行为,所以对象也可以隐藏;当你的基类中的虚函数被派生类中的重载了时,其实就是函数被隐藏了.所以封装不光是数据隐藏,而是一切形式的隐藏.这个也是面向对象中最核心的东西.
     继承,以前老是被强调为软件复用,从一个类型更快的构造出另一个类型.这种说法是片面的.继承最大的威力是表示了两个类型"是一个"的关系,比如交通工具是基类,汽车是派生类,你可以说汽车是一种交通工具.但是交通工具类是个抽象类,根本就没有什么可以复用的东西.所以,公有继承就是对现实世界的对象关系的一种抽象和反映,私有继承目的才是复用基类数据和方法.
     多态,说白了算不上设计层次的一个特性,只是实现层次的东西.在这里就不讨论了.
     还有"组合".有时候组合和私有继承可以互用,因为他们的目的是一样的.先举个例子:假如你要设计一个汽车,你肯定是先把所有的组成部分设计好,有"引擎","轮胎","车身"等,然后组装在一起就是一辆汽车了。把它用软件表示出来,就是组合,一个汽车对象是由引擎对象,轮胎对象,车身对象等组合成的,它们的关系是"有一个的关系",汽车有一个引擎。
    把上面的介绍完了,然后看看什么是设计模式。模式就是"描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动".  模式也是遵循了面向对象中的几个原则,而得出的对问题解决方案。
 
  1.开放封闭原则。被解释为"一个软件应该对修改是封闭的,对扩展是开放的".也就是说应该尽量设计灵活的软件,不要等需求变化时,修改软件,而是应该支持扩充,来应对变化。
  2.四人团根据上述指导原则,提出模式必须遵循的三点要求。
    (1)针对接口编程;(2)尽量使用组合而不是继承;(3)封装变化点。
    其实只要遵守这几个思想的面向对象解决方案都是模式。模式就是更好的面向对象思想的产物。模式是一种规则和思想,只要你有这样的思想你也可以创造出新模式。
 
  以后,我会陆陆续续介绍四人团的那23个设计模式的。

参考文献:

<设计模式精解>, 清华大学出版社, 熊节译.

<设计模式可复用面向对象软件的基础>, 机械工业出版社, 四人团著.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学习设计模式之初,面向对象再理解

要开始大话设计模式的学习了,看这本书的封面,感觉很轻松,很卡通,很有趣。一本新书怎么去读,怎么去学,老师讲过很多次了。 一本书的前言是相当重要,它能帮助我们掌握全局,它也可能会给予我们一些指导。读完前...

面向对象设计模式与原则(一)

C#面向对象设计模式纵横谈面向对象设计模式与原则设计模式简介每一个模式描述了一个在我们周围不断重复 发生的问题,以及该问题的解决方案的核心。 ——Christopher Alexander 设计模式描...

面向对象设计模式总结一

总结常用的设计模式和设计原则
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)