ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
终于。。。。。我们来到继承(inheritance)
我们有数种影片类型,它们以不同的方式回答相同的问题。这听起来很像subclasses的工作。我们可以建立Movie的三个subclasses,每个都有自己的计费法。

这么一来我就可以运用多态(polymorphism)来取代switch语句了。很遗憾的是这里有个小问题,不能这么干。一部影片可以在生命期周期内修 改自己的分类,一个对象却不能在生命周期内修改自己的分类,一个对象却不能在生命周期内修改自己所属的class。不过还是有一个解决方法:state pattern(模式)。加入这一层间接性,我们就可以在Price对象内进行subclassing动作,于是便可在任何必要时刻修改价格。

为了引入state模式,我使用三个重构准则。首先运用Replace Type Code with State/Strategy(227),将[与型相依的行为](type code behavior)搬移至state模式内。然后运用Move Method(142)将switch语句移到Price class里头。最后运用Replace Conditional with Polymorphism(255)去掉switch语句。
posted on 2005-08-15 16:16 ivaneeo 阅读(106) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: