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 閱讀(175) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 宁城县| 屏山县| 年辖:市辖区| 利辛县| 阿尔山市| 长葛市| 吕梁市| 德格县| 衢州市| 应城市| 拜城县| 龙江县| 扶沟县| 贞丰县| 台北市| 南和县| 读书| 洞头县| 金华市| 神池县| 和硕县| 贵定县| 广饶县| 大城县| 阿鲁科尔沁旗| 柳江县| 马鞍山市| 教育| 成武县| 阿拉尔市| 寿宁县| 师宗县| 女性| 青浦区| 柞水县| 浮梁县| 永善县| 广平县| 封丘县| 南川市| 韩城市|