面试-设计模式六大原则
相關資料:
http://blog.csdn.net/zhengzhb/article/details/7296944
https://blog.csdn.net/fanxudonggreat/article/details/78888267
一、單一職責
定義:
簡單來說單一職責就是一個類只負責一個功能。更加具體的說就是對一個類而言,應該是一組相關性很高的函數、數據的封裝,是高內聚低耦合的,對外界而言應該僅有一個引起它變化的原因。
二、開閉原則
定義:
開閉原則的英文全稱是Open Close Principle縮寫即OCP。軟件中的對象(類、模塊、函數等)應該對于擴展是開放的,但是對于修改是封閉的。
特點:
在軟件的生命周期內,因為變化、升級和維護等原因需要對軟件的原有代碼進行修改時,可能會將錯誤的代碼引入,從而破壞原有系統。因此當軟件需求發生變化時,我們應該盡量通過擴展的方式 來實現變化,而不是通過修改已有的代碼。
三、里氏替換原則
定義:如果對每一個類型為S的對象O1,都有類型為T的對象O2,程序P在所有的對象O1都帶換成O2時,程序P的行為沒有發生變化,那么類型S是類型T的子類型換言之就是所有引用基類的地方必須能透明的使用其子類的對象。更通俗的講就是只要父類出現的地方子類就可以出現,而且替換為子類也不會產生任何的錯誤或者異常。
特點:
里氏替換原則的核心是抽象,而抽象又依賴于繼承這個特性,在OOP當中,繼承的優缺點都相當明顯。
優點:
1.代碼重用,減少創建類的成本,每個子類都擁有父類的方法和屬性
2.子類與父類基本相似,但又與父類有所區別
3.提高代碼的可擴展性
缺點:
1.繼承是侵入性的,只要繼承就必須擁有父類的方法和屬性
2.可能造成子類代碼冗余,靈活性降低,因為子類必須擁有父類的屬性和方法
在上面的例子中,我們通過ImageCache建立起了一套緩存的規范,在通過setImageCache注入不同的具體實現,保證了系統的擴展性和靈活性。因此開閉原則和里氏替換原則往往是生死相依,形影不離的,通過里氏替換原則來達到對擴展開放,對修改關閉的效果。
四、依賴倒置原則
定義:依賴倒置原則指定了一種特定的解耦形式,使得高層次的模塊不依賴與低層次模塊的實現細節的目的,依賴模塊被顛倒了。
特點:
1.高層模塊不應該依賴于低層模塊,兩者都應該依賴其抽象
2.抽象不應該依賴于細節
3.細節應該依賴于抽象
五、接口隔離原則
定義:
1.客戶端不應該依賴于他不需要的接口。
2.類之間的依賴關系應該建立在最小的接口上。
特點:
接口隔離原則將非常龐大,臃腫的接口拆分成更小的和更具體的接口,這樣客戶端將會值需要知道它們感興趣的方法。接口隔離原則的目的是系統解開耦合,從而容易重構、更改和部署。
六、迪米特原則
原則:一個對象應該對其他對象有最少的了解,通俗的講,一個類應該對自己需要耦合或調用的類知道的最少,類的內部如何實現與調用者或者依賴者沒有關系,調用者或者依賴者只需要知道他需要的方法即可,其他的一概不管。類與類之間的關系越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。
?
轉載于:https://www.cnblogs.com/FKdelphi/p/6429940.html
總結
以上是生活随笔為你收集整理的面试-设计模式六大原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java对象及相关
- 下一篇: asp.net ajax控件工具集 Au