关闭

从面向对象到设计模式

905人阅读 评论(0) 收藏 举报

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

参考文献:

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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4974次
    • 积分:93
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章存档
    最新评论