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