摘要:本文參考于設計模式課程設計模式之適配器模式設計模式是一套被反復使用的多數人知曉的經過分類編目的代碼設計經驗的總結。第一個設計模式是適配器模式。總的來說適配器就是的模式,與修飾模式直接無感使用不同,適配器模式使用對象變為。
本文參考于:
設計模式課程
設計模式之適配器模式
設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式于己于他人于系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。
設計模式如此強大,從今天開始,抓住大學生活的尾巴,我要一天學習一個設計模式啦。
第一個設計模式是:適配器模式。
使用場景:
1 系統需要使用現有的類,而這些類的接口不符合系統的需要。
2 想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。
3 需要一個統一的輸出接口,而輸入端的類型不可預知。
比如插座-充電器-電子設備的例子。插座輸出的是220V的電壓,而電子設備充電時只需5V,不然就note7了,這時充電器充當適配器,接受插座的220V,輸出5V,從而作為連接器讓電子設備順利充電。
總的來說適配器就是src-adapter-dist的模式,與修飾模式直接無感使用src不同,適配器模式使用對象變為adapter。
適配器模式不是在系統設計時所預期的,是在需求改動、升級的時候動態添加的,如果一個系統使用過多的適配器,明明調用的是A接口,卻在適配器內部實現的是調用B接口,導致系統混亂。
適配器模式分為三種:
一、類適配器模式;二、對象適配器模式;三、接口適配器模式(JS沒有抽象類的概念,這里不詳細講述)
接下來舉的例子就是上面插座-充電器-電子設備的例子。
類適配器繼承src,實現dist的接口。
先是插座
function Plug() { this.V = 220; } Plug.prototype.outputVoltage220 = function() { return this.V; };
再是手機
function Phone() { this.V = 5; } Phone.prototype.charge = function(outputDevice) { if (outputDevice.outputVoltage5() === this.V) { console.log("充電中..."); } else { console.log("充電異常"); } };
現在我們要實現的是outputVoltage5的接口,以對接手機的輸入電壓
function inherit(Sub, Sup) { Sub.prototype = Object.create(Sup.prototype); Object.defineProperty(Sub.prototype, "constructor", { enumerable: false, value: Sub }); } function Charger() { Plug.call(this); } inherit(Charger, Plug); Charger.prototype.outputVoltage5 = function() { return this.outputVoltage220() / 44; };
這樣充電器就實現了連接插座和手機的功能。
var cg = new Charger(); var mobile = new Phone(); mobile.charge(cg);
小結:類適配器使用繼承的方式實現,會暴露src的所有其他方法。
對象適配器對象適配器和類適配器相差不大,使用組合的方式實現。
持有src,實現dist接口,完成src->dist的適配
function Charger2() { this.plug = null; } Charger2.prototype.initPlug = function(plug) { return this.plug = plug; }; Charger2.prototype.outputVoltage5 = function() { if (!this.plug) { console.error("未插電"); return -1; } return this.plug.outputVoltage220() / 44; };
同樣也能正常充電
var plug = new Plug(); var cg2 = new Charger2(); cg2.initPlug(plug); mobile.charge(cg2);
小結:根據合成復用原則,組合優于繼承,所以結構型模式一般都是對象結構型模式。
以上表述有什么問題,歡迎大家指出,一起學習。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107640.html
摘要:適配器模式的結構通過繼承實現通過委讓實現代碼實現目標類使用數據線適配類使用轉適配線主函數與在適配器模式中的應用當前,不少公司使用整合進行系統開發。 Java 23種設計模式----適配器模式 1、面向對象OO = 面向對象分析OOA + 面向對象設計OOD + 面向對象編程OOP 2、編程是一門技術、同時也是一門藝術 3、應該面向接口編程,而不是面向實現編程 什么是設計模式 設計模式是...
摘要:參考文章設計模式之建造者模式一什么是建造者模式建造者模式是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 參考文章:java設計模式之建造者模式 一、什么是建造者模式建造者模式:是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。工廠類模式提供的是創建單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來創建復合對象,所謂...
摘要:參考文章深入理解三種工廠模式工廠模式,工廠方法模式,抽象工廠模式詳解工廠模式是中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 參考文章:深入理解java三種工廠模式工廠模式,工廠方法模式,抽象工廠模式 詳解 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的...
閱讀 915·2021-09-09 09:32
閱讀 2872·2021-09-02 10:20
閱讀 2703·2021-07-23 11:24
閱讀 832·2019-08-30 15:54
閱讀 3635·2019-08-30 15:54
閱讀 1350·2019-08-30 11:02
閱讀 2849·2019-08-26 17:40
閱讀 1129·2019-08-26 13:55