2013年9月23日 星期一

OOAD原則 (一) Open/Close Principle 開閉原則

簡稱OCP 意思是

一個軟體應該要夠開放使得他可以被擴充,但是也要夠封閉以避免不必要的修改 

這句話其實很像是繞口令而且看起來很矛盾


讓我們舉個例子
當我們有 功能/Bug 需要去修改程式時 
最好的方法是甚麼?  在程式裡面加上一個flag? 
這個是我覺得最可怕的解法...

每當遇到一個 新功能/Bug 就用flag去判斷
在一開始可以得到不錯的效果
但是當過了一個禮拜....兩個禮拜....兩個月之後
當某天必須回來看這份code  你會發現Long time ago......
(一個好的故事都是這麼開始的....可惜這是一個可怕的code....)
那麼多個flag到底是要幹嘛的
而且一大堆flag 你能很確定的說  這個flag的運作方式就跟當初想的時候一樣嗎?

我記憶力一向不太好  就算有註解   過了那麼久我也還是得把code重新看一次(崩潰...)

所以為了能修改程式又不要動到其他看似沒有問題的程式最好的辦法就是用class去分開他
在不同的情況下使用不同的class去處理事情
Strategy Pattern 就是用到了這個方法 
好處是user只需要知道做了sort這個動作而不需要知道細節
有新功能被增加時並不會影響到main function  (因為加在class裡)

沒有留言:

張貼留言