23种设计模式及OOP7大原则
一、 23種Java設計模式介紹
概述
設計模式是針對某一類問題的最優解決方案,是從許多優秀的軟件系統中總結出的。Java中設計模式(java design patterns)通常有23種。模式可以分成3類:創建型、行為型和結構型。
創建型模式:避免用戶直接使用new創建對象
創建型模式涉及對象的實例化,特點是不讓用戶代碼依賴于對象的創建或排列方式,避免用戶直接使用new創建對象。
創建型模式有以下5個:工廠方法模式 、抽象工廠方法模式、生成器模式、原型模式 、單例模式
行為型模式:設計對象之間的交互通信
行為型模式涉及怎樣合理的設計對象之間的交互通信,以及怎樣合理為對象分配職責,讓設計富有彈性,易維護,易復用。行為型模式有以下11個:責任鏈模式、命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、模板方法模式和訪問者模式
結構型模式:合理使用繼承機制
結構型模式涉及如何組合類和對象以形成更大的結構,和類有關的結構型模式涉及如何合理使用繼承機制;和對象有關的結構型模式涉及如何合理的使用對象組合機制。結構型模式有以下7個:適配器模式、組合模式、代理模式、享元模式、外觀模式、橋接模式和裝飾模式。
二、OOP7大原則
(Single Responsibility Principle) 優化代碼的第一步
一個類中應該是一組相關性很高的函數、數據的封裝。
(Open Close Principle) 讓程序更穩定、更靈活
軟件中的對象(類、模塊、函數等)應該對于擴展是開放的,但是對于修改是封閉的。 在軟件的生命周期內,因為變化、升級和維護等原因需要對軟件原有代碼進行修改時,可能會將錯誤引入原本已經經過測試的舊代碼中,破壞原有系統。因此,當軟件需要變化時,我們應該盡量通過擴展的方式來實現變化,而不是通過修改已有的代碼來實現。
(Liskov Substitution Principle) 構建擴展性更好的系統
有引用基類的地方必須能夠透明地使用其子類的對象。 舉個例子:如果對每一個類class1的對象o1,都有類class2的對象o2,使得以class1定義的所有程序P在所有對象o1都替換成o2的時候,程序P的行為都沒有發生變化,那么類型class2是類型class1的子類型。
通俗點講,只要父類出現的地方子類就可以出現,而且替換為子類也不會產生任何錯誤和異常。
(Dependence Inversion Principle) 讓項目擁有變化的能力
依賴倒置原則指代了一種特定的解耦形式,使得高層次的模塊不依賴與低層次的模塊的實現細節的目的。
依賴倒置原則有以下幾個關鍵點:
高層模塊不應該依賴于底層模塊,兩者都應該依賴其抽象;
抽象不應該依賴細節;細節應該依賴抽象。
依賴導致原則在Java語言中的表現就是:模塊間的依賴關系通過抽象發生,實現類之間不發生直接依賴關系,其依賴關系是通過接口或抽象類產生的。在編程過程中盡量面向接口編程,也就是說在寫一個類前先寫一個接口,然后用一個類來實現這個接口,通過面向接口編程,我們的程序就有了很高的擴展性,降低了類與類之間的依賴性,使實現類更依賴于接口,而不是其他實現類,提高了系統的穩定性。
(Interface Segregation Principle) 系統有更高的靈活性
客戶端不應該依賴于它不需要的接口。 另一種定義是:類間的依賴關系應該建立最小的接口上,不應該依賴于它不需要的接口。接口隔離原則將非常龐大的、臃腫的接口拆分成更小的和更具體的接口。簡單來說就是接口應該盡量細分,使每一個類都沒有它不需要實現的方法。
(Law of Demeter) 更好的可擴展性
一個對象應該對其他對象有最少的了解。 通俗的講,一個類應該對自己需要耦合或調用的類知道的最少,類的內部如何實現與調用者或依賴者沒關系,調用者或依賴者只需要知道它需要的方法即可。當我們在編寫一個類時,這個類的屬性能私有化就私有化,盡量不與其他類產生聯系。一個對象應該對其他對象保持最少的了解,簡單的理解就是高內聚,低耦合。
(Conposite Reuse Principle)
盡量使用合成/聚合的方式,而不是使用繼承。
總結
以上是生活随笔為你收集整理的23种设计模式及OOP7大原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理学技术之数据结构
- 下一篇: asp.net ajax控件工具集 Au