享受代码,享受人生

SOA is an integration solution. SOA is message oriented first.
The Key character of SOA is loosely coupled. SOA is enriched
by creating composite apps.
posts - 213, comments - 2315, trackbacks - 162, articles - 45
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

再谈多态

Posted on 2004-12-22 12:31  idior  阅读(...)  评论(...编辑  收藏
最近又翻了几页Design patterns, 发现在这本书中也几乎没有发现"多态"这个词,那么是多态不重要吗?
显然不是,有关多态的介绍请见 samuel的文章

在我的面向对象乱弹中,我竟然只字未提多态,实在是罪过.但是仔细想想你在 Design patterns ,agile software develop
中见过多态这个词吗? why?

我认为多态只是一项语言的技术,本身对于建模,和看待问题并没有什么作用.也就是更多的说来,它是在实现层 (implement level)
的一个概念.我们在建模的时候不能过早的深入到实现层,那样就会只见树木,不见森林.所以在书中,这个词并不常见.
然而,多态的使用在这些书中又是屡见不鲜. 那么在概念层(concept level)又是如何描述多态的呢.
我认为   隐藏变化 ,依赖反转,封闭开放原则 都是在概念层对多态的描述.难道看到这几个词,你不会想到多态吗?
他们都是在多态的基础上实现的.

再想想我们当初学多态的时候
Shape shape =new Rectangle();
Println("My shape has "+shape.getSides()+ " sides");


你知道其中的含义吗?
我那时只是感觉到了语言的巧妙,一点不明白为什么要这样做.其实这就是 隐藏变化

再看看 纯爷么的template method  多态和继承很容易看到,但该模式的核心你看到了吗?

所以说多态只是语言的特性,而在我们理解问题,分析问题,建模的时候考虑的不应该是多态,而是隐藏变化 ,依赖反转,封闭开放原则