2011年1月7日 星期五

The Open-Closed Principle

To extend the behavior of the system, we add new code. We donot modify old code.

Cool...OCP 真的是軟體工程師們的最大夢想....永遠不希望去改舊程式

每當新增功能時,是去新增程式而非改程式,對於既有的東西盡量不去變動....(迷之音:"林北的XX局肝伍摳玲")

但也不是真的完全都不去動舊程式拉,在OCP的建議法則下至少有兩點規則建議遵守

  1. Open For Extension - The behavior of the module can be extended to meetnew requirements

  2. Closed For Modification - the source code of the module is not allowed tochange


那到底該怎麼達成 ? --> by abstraction,polymorphism,inheritance,and interfaces

說實話,OCP真他媽的是OOD核心,即使我們知道真的很難達成這理念,但也希望盡可能減少大幅變動的機會。

看一下下面這範例,在"parts"的計價方式不變的情況下壹切都很自然沒問題



但如果一旦遇到瘋狂折扣日時,如下,這讓我想到

我的好朋友"肉以葛格"在CHT常常遇到不同的計價費率時要很頭痛的問題



該怎麼做呢? ....

甘丹拉...直接把變動的部分抽出來以base class , subclass解決-->喔天阿以後若多個幾次就暈了



那....怎麼辦? 一休說要動動腦.. -->用個Composition概念吧



這樣就可以透過控制factor因子來處理多變的折扣方案了

沒有留言: