极限编程与敏捷开发(4)
解決方案一:
下面圖1是一種最簡單的解決方案,Switch對象可以輪詢真實開關的狀態,并且可以發送相應的turnOn和turnOff消息給Light。
| ? |
| 圖1 |
解決方案二:
上面這個設計違反了兩個設計原則:依賴倒置原則(DIP)和開放封閉原則(OCP),DIP原則告訴我們要優先依賴于抽象類,而Switch依賴了具體類Light,對OCP的違反是在任何需要Switch的地方都要帶上Light,這樣就不能容易擴展Switch去管理除Light外的其他對象。為了解決這個方案,可以采用ABSTRACT SERVER模式,在Switch和Light之間引入一個接口,這樣就使得Switch能夠控制任何實現了這個接口的東西,這也就滿足了DIP和OCP原則。如下面圖2所示:
| ? |
| 圖2 |
解決方案三:
上面圖2所示解決方案,違返了單一職責原則(SRP),它把Switch和Light綁定在一起,而它們可能會因為不同的原因而改變。這種問題可以采用ADAPTER模式來解決,適配器從Switchable 派生并委托給Light,問題就被優美的解決了,現在,Switch就可以控制任何能夠被打開或者關閉的對象。但是這也需要會出時間和空間上的代價來換取。如下面圖3所示:
| ? |
| 圖1 |
敏捷設計是一個過程,不是一個事件。它是一個持續的應用原則、模式以及實踐來改進軟件的結構和可讀性的過程。它致力于保持系統設計在任何時間都盡可能得簡單、干凈和富有表現力。
轉載于:https://blog.51cto.com/13619205874/425389
總結
以上是生活随笔為你收集整理的极限编程与敏捷开发(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cocos2d开发1:Xcode与Tex
- 下一篇: 搭建LNMP遇到的问题