最近又翻了几页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 多态和继承很容易看到,但该模式的核心你看到了吗?
所以说多态只是语言的特性,而在我们理解问题,分析问题,建模的时候考虑的不应该是多态,而是隐藏变化 ,依赖反转,封闭开放原则
显然不是,有关多态的介绍请见 samuel的文章
在我的面向对象乱弹中,我竟然只字未提多态,实在是罪过.但是仔细想想你在 Design patterns ,agile software develop
中见过多态这个词吗? why?
我认为多态只是一项语言的技术,本身对于建模,和看待问题并没有什么作用.也就是更多的说来,它是在实现层 (implement level)
的一个概念.我们在建模的时候不能过早的深入到实现层,那样就会只见树木,不见森林.所以在书中,这个词并不常见.
然而,多态的使用在这些书中又是屡见不鲜. 那么在概念层(concept level)又是如何描述多态的呢.
我认为 隐藏变化 ,依赖反转,封闭开放原则 都是在概念层对多态的描述.难道看到这几个词,你不会想到多态吗?
他们都是在多态的基础上实现的.
再想想我们当初学多态的时候
Shape shape =new Rectangle();
Println("My shape has "+shape.getSides()+ " sides");
你知道其中的含义吗?
我那时只是感觉到了语言的巧妙,一点不明白为什么要这样做.其实这就是 隐藏变化
再看看 纯爷么的template method 多态和继承很容易看到,但该模式的核心你看到了吗?
所以说多态只是语言的特性,而在我们理解问题,分析问题,建模的时候考虑的不应该是多态,而是隐藏变化 ,依赖反转,封闭开放原则