APP開發(fā)關(guān)于設(shè)計模式(DesignPattern)簡介,設(shè)計模式(DesignPattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。深圳APP開發(fā)公司認(rèn)為使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
開發(fā)APP面向?qū)ο笤O(shè)計原則面向?qū)ο笤O(shè)計有6大原則,具體如下所述。
(1)單一職責(zé)原則(SingleResponsibilityPrinciple,SRP)一個類應(yīng)該是一組相關(guān)性很高的方法和數(shù)據(jù)的封裝。
(2)開閉原則(OpenClosedPrinciple,OCP)開閉原則是說模塊應(yīng)對擴(kuò)展開放,而對修改關(guān)閉,模塊應(yīng)盡量在不修改原(“原”是指原來的代碼)代碼的情況下進(jìn)行擴(kuò)展。它是面向?qū)ο笤O(shè)計的終極目標(biāo)。
(3)里氏替換原則(LiskovSubstitutionPrinciple,LSP)在調(diào)用父類的地方換成其子類也完全可以運行。面向?qū)ο笳Z言的3大特點是封裝、繼承和多態(tài)。里氏替換原則依賴于繼承和多態(tài)。
(4)依賴倒置原則(DependenceInversionPrinciple,DIP)
抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。要針對接口編程,而不是針對實現(xiàn)編程。高層模塊不應(yīng)該依賴底層模塊,兩者都應(yīng)該依賴于抽象。
(5)接口隔離原則(InterfaceSegregationPrinciple,ISP)類不應(yīng)該依賴它不需要的接口,類依賴的接口盡可能小,且每一個接口都應(yīng)該是一種角色。
(6)最小知識原則(PrincipleofLeastKnowledge,PLK)一個類應(yīng)該對自己需要耦合或調(diào)用的類知道得最少,類的內(nèi)部如何實現(xiàn)與調(diào)用者或者依賴者沒關(guān)系,調(diào)用者或依賴者只需知道它需要的方法即可,其他的一概不用管。設(shè)計模式就是依據(jù)這些原則,來實現(xiàn)代碼復(fù)用和增加可維護(hù)性的目的。
開發(fā)APP關(guān)于DesignPattern設(shè)計模式類別
設(shè)計模式分為以下3種類型。
(1)創(chuàng)建型模式包括單例模式、抽象工廠模式、建造者模式、工廠模式和原型模式。
(2)結(jié)構(gòu)型模式包括適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式和代理模式。
(3)行為型模式包括模板方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、職責(zé)鏈模式和訪問者模式。
APP開發(fā)關(guān)于DesignPattern單例模式
單例模式保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。此模式適用于只創(chuàng)建一個對象,以避免產(chǎn)生多個對象消耗過多資源及只應(yīng)該創(chuàng)建一個對象的場景。如加載圖片的ImageLoad對象、線程池對象、緩存對象、網(wǎng)絡(luò)請求對象、數(shù)據(jù)庫對象、文件對象、登錄狀態(tài)對象、日志對象及一些公共數(shù)據(jù)對象,都可以用單例模式實現(xiàn),這樣也減少了靜態(tài)和全局變量的使用。APP向服務(wù)器發(fā)送請求的時候,在有些界面會發(fā)送多個請求給服務(wù)器,這時如果網(wǎng)絡(luò)或服務(wù)器端出錯,會接連彈出多個提示框。這種提示框也可以使用單列模式創(chuàng)建,這樣即使發(fā)送了多個請求,但只顯示一個出錯提示框,從而改善用戶體驗。實現(xiàn)單例模式的方式有餓漢和懶漢等方式,如果考慮到多線程的情況,這些方式都有不足之處,推薦使用以下方式實現(xiàn)。publicclassMyApplication{ privateMyApplication(){} publicstaticMyApplicationgetInstance(){ returnMyApplicationHolder.sInstance; } privatestaticclassMyApplicationHolder{ privatestaticfinalMyApplicationsInstance=newMyApplication(); }}第一次加載MyApplication類時,不會初始化sInstance,只有在第一次調(diào)用MyApplication的getInstance方法時,才會導(dǎo)致sInstance被初始化。在第一次調(diào)用getInstance方法時會加載MyApplicationHolder類,這種方式不僅能確保線程安全,也能保證單例對象的唯一性,同時也延遲了對象的實例化。好了,APP開發(fā)公司本文關(guān)于“APP開發(fā)關(guān)于設(shè)計模式(DesignPattern)的原則詳解”知識就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。