1
在我看來,鮑勃馬丁需要一個以O開頭的東西來製作SOLID,並在一些舊書中找到了這個(可能無用的)開放/封閉原則。「開放延伸,關閉修改」原則是否有意義?
開放/關閉如何與單一職責並存,表明一個班級應該有單一的變更理由?
如果我想關注長時間生活系統中的開放/關閉,我是否應該有一個數十/數百個類的鏈,每個類都擴展前一個?
在我看來,鮑勃馬丁需要一個以O開頭的東西來製作SOLID,並在一些舊書中找到了這個(可能無用的)開放/封閉原則。「開放延伸,關閉修改」原則是否有意義?
開放/關閉如何與單一職責並存,表明一個班級應該有單一的變更理由?
如果我想關注長時間生活系統中的開放/關閉,我是否應該有一個數十/數百個類的鏈,每個類都擴展前一個?
開放/關閉原則意味着您可以創建通過添加新代碼而不是更改舊代碼來添加新功能的系統。爲了完全符合開放/封閉原則,必須有完美的遠見。爲了創建一個完全開放的系統,並對所有修改進行關閉,必須能夠完美地預測未來。人們必須事先知道客戶爲了向代碼添加擴展點而要求的新功能。
話雖如此,我們可以開發符合開放/封閉原則的系統。通過使用具有大量反饋和重構的迭代過程,我們可以改進最經常變化的系統部分,方法是將它們打開爲擴展並關閉以進行修改。
正如Bob Martin在他的一篇演講中所說:「我們不能完全符合開放/封閉的原則,並不意味着我們應該完全放棄開放/封閉的原則,可能很難整個系統要符合開放/關閉的原則,但要使功能或類別或更小的組件符合開放/關閉原則並不困難「
這個問題的答案是」是的「,這會使一個相當糟糕的答案... – PeeHaa
即使這個答案是一個有用的數據點:) –
這可能太開放了 - 但我發現這兩個帖子在思考SOLID時很有用:http://accu.org/index.php/期刊/ 1957和http://accu.org/index.php/journals/1957 – doctorlove