新疆網(wǎng)站備案代辦谷歌play商店官網(wǎng)
一、說一下你熟悉的設計模式?
**設計模式:**是一套被反復使用的代碼設計經(jīng)驗的總結(情境中一個問題經(jīng)過證實的一個解決方案)。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式使人們可以更加簡單方便的復用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統(tǒng)開發(fā)者更加容易理解其設計思路。
**創(chuàng)建型:**Abstract Factory(抽象工廠模式),Builder(建造者模式),Factory Method(工廠方法模式),Prototype(原始模型模式),Singleton(單例模式);
**結構型:**Facade(門面模式),Adapter(適配器模式),Bridge(橋梁模式),Composite(合成模式),Decorator(裝飾模式),Flyweight(享元模式),Proxy(代理模式);
**行為型:**Command(命令模式),Interpreter(解釋器模式),Visitor(訪問者模式),Iterator(迭代模式),Mediator(調停者模式),Memento(備忘錄模式),Observer(觀察者模式),State(狀態(tài)模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibility(責任鏈模式)。
二、簡單工廠、工廠方法和抽象工廠有何區(qū)別?
工廠模式是分為三種,分別是簡單工廠,工廠方法,抽象工廠。其中工廠方法和抽象工廠是GoF23種設計模式中的一種,而簡單工廠則不是一種設計模式,更加可以理解的是一種編碼時候約定俗成的一種習慣。那么,就在接下來三點中分別去分析理解工廠模式。
**簡單工廠模式:**是由一個工廠對象創(chuàng)建產(chǎn)品實例,簡單工廠模式的工廠類一般是使用靜態(tài)方法,通過不同的參數(shù)的創(chuàng)建不同的對象實例,可以生產(chǎn)結構中的任意產(chǎn)品,不能增加新的產(chǎn)品;
- 簡單工廠的優(yōu)點:
- 不需要關心類的創(chuàng)建細節(jié)。
- 減輕類之間的耦合依賴,具體類的實現(xiàn)只是依賴于簡單工廠,而不依賴其他類。
- 簡單工廠的缺點:
- 擴展復雜,當簡單工廠需要生產(chǎn)出另外一種產(chǎn)品的時候,需要擴展工廠的內部創(chuàng)建邏輯,比較有可能引起較大的故障
- 由于工廠類集中了所有實例的創(chuàng)建邏輯,違反了高內聚責任分配原則,將全部創(chuàng)建邏輯集中到了一個工廠類中
**工廠方法:**是定義一個創(chuàng)建對象的接口,讓實現(xiàn)這個接口的的類去決定實例化具體的類。工廠方法讓類的實例化推遲到實現(xiàn)接口的子類中進行。
**抽象工廠模式:**提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需制定他們具體的類,生產(chǎn)多個系列產(chǎn)品;生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品,不能新增產(chǎn)品,可以新增產(chǎn)品族;
區(qū)別:
- 簡單工廠:唯一工廠類,一個產(chǎn)品抽象類,工廠類的創(chuàng)建方法依據(jù)入?yún)⑴袛嗖?chuàng)建具體產(chǎn)品對象。
- 工廠方法:多個工廠類,一個產(chǎn)品抽象類,利用多態(tài)創(chuàng)建不同的產(chǎn)品對象,避免了大量的if-else判斷。
- 抽象工廠:多個工廠類,多個產(chǎn)品抽象類,產(chǎn)品子類分組,同一個工廠實現(xiàn)類創(chuàng)建同組中的不同產(chǎn)品,減少了工廠子類的數(shù)量。
注:以上內容僅提供參考和交流,請勿用于商業(yè)用途,如有侵權聯(lián)系本人刪除!
注:此博客只是為了記憶相關知識點,大部分為網(wǎng)絡上的文章,在此向各個文章的作者表示感謝!