public
class component
status m_status = status.none;
void do()
}}
使用switch分支是一種經典的做法,當元件的狀態不存在變化的可能時,該段**無可挑剔,堪稱完美。
但在實際專案中,過了一段時間後,我們發現元件的狀態不夠,在列舉中加乙個狀態,在switch中加乙個分支。後面需要的狀態,我還不得而知。
這個是嚴重違反開閉原則
使用繼承/組合封裝變化點
public
class componentstatus
}public
class componentnone:componentstatus
}public
class componentinitialized:commponentstatus
}public
class component
public
void
do()
}
開放封閉原則(OCP)
開放封閉原則 軟體實體 類,模板,函式等 應該是可以擴充套件的,但是不可以修改。舉個栗子,加入我們要設計乙個系統,在專案啟動的時候我們不可能一下子把所有的需求全部考慮到。我們所需要做的就是多擴充套件,少修改!在我們最初編寫 的時候,假設變化不會發生。當變化發生的時候,我們就建立抽象來隔離以後發生的同...
OCP開放封閉原則
軟體實體 類 模組 函式等 應該是可以擴充套件的,但是不可修改。如果正確的應用了ocp原則,那麼 以後在進行同樣的改動時,就只需要新增新的 不必修改已經正常執行的 1.對於擴充套件是開放的 這意味著模組的行為是可以擴充套件的。當應用的需求改變時,我們可以對模組進行擴充套件,使其具有滿足那些改變的新行...
開放 封閉原則(OCP)
幾乎所有的系統,都不可能一成不變,只要是需求,就一定是會變化的。如何在面對需求的變化的時候,設計的軟體可以相對容易修改,不至於新的需求一來,就把程式推到重來。怎麼樣的設計才能面對需求的改變卻可以保持相對穩定,從而使得系統可以在第乙個版本以後不斷推出新的版本。這就是ocp原則要告訴我們的東西。面對需求...