摘要:適配器模式之數據格式轉換適配器模式不僅可以起到適配接口名的作用,它另外還有一個功能就是能統(tǒng)一不同格式的作用。我們的目的就是在程序中,不要出現適配器模式,但考慮到實際,這也是不可能的,所以盡量將代碼設計符合規(guī)范是非常必要的。
這個模式應該算是除了單例模式以外最簡單的一個模式,沒有多余的類,這個模式只有一個職責,就是轉換的你接口參數,歸一化接口調用函數,同意參數格式。
說人話~
其實就是,將不同東西,加上同一個包裝。
而這個模式,我們應該早熟悉了。
在命令模式的中,有這樣一段代碼:
//封裝命令 var MoveUp = function(exer){ this.exer = exer; } MoveUp.prototype.do = function(){ this.exer.moveUP(); } var MoveDown = function(exer){ this.exer = exer; } MoveDown.prototype.do = function(){ this.exer.moveDown(); } var MoveLeft = function(exer){ this.exer = exer; } MoveLeft.prototype.do = function(){ this.exer.moveLeft(); } var MoveRight = function(exer){ this.exer = exer; }
在不同的命令中,我們使用類將原本接口不一致的命令適配為同一個接口的函數。而適配器的精華就體現在這里,要知道,他和代理模式一樣,只起到一個中間層的作用,實質上并不會改變一個整體架構。 而我們大費周章的將他列為一個模式是很有代理的。因為在實際開發(fā)當中,我們必定會使用到一些第三方的API,有時候leader高瞻遠矚往往會使用多個相同功能的 不同提供商的 API(是不是傻啊~). 現實是,這些提供商的API要么名字不一樣,要么參數不統(tǒng)一,但是必須要用,那就可以使用適配器模式來進行轉化。
比如一個調 "評論模塊" 的API
多說里面是. DS.comment().
Disqus的是. DQ.commentary().
(上面是我意淫的接口)
首先,leader的要求是,一開始使用多說的評論。(鬼信啊,萬一以后你又用Disqus,那我還怎么過年)
我們這里可以使用適配器模式給自己留一條后路
var _disqus = { //disqus評論插件 comment(){ disqus.commentary(); } } var _DS = { //多說評論插件 comment(){ DS.comment(); } } var command = function(comment){ comment.comment(); } //使用多說的評論 command(_DS);
以后萬一leader不爽多說了,想換,你也是輕而易舉的。
適配器模式之數據格式轉換適配器模式不僅可以起到適配接口名的作用,它另外還有一個功能就是能統(tǒng)一不同格式的作用。
在某個接口中,使用的數據格式是這樣的。
[{ name:"sam", year:12, gender:"male" }]
但是由于后臺SB的不準守文檔,使用了這樣的格式。
{ sam: { year: 12, gender: "male" }, ... }
但是,你的js已經按照文檔的要求完成了任務標準,而此時,后臺已經把后臺接口寫好了,估計現在度假去了。沒辦法,只有改動了,現在有兩種選擇,一種是直接破壞你原來寫好的程序邏輯,還有一種是使用適配器模式直接改寫。
我的話,我會選擇,適!配!器!模!式!
我們可以自定義一個格式轉化類
var json = { sam: { year: 12, gender: "male" }, jimmy:{ year:22, gender:"female" } } function adaption(para){ var keys = Object.keys(para), obj = []; for(var i = 0,temp,key; key = keys[i++];){ temp = para[key]; temp.name = key; obj.push(temp); } return obj; } console.log(adaption(json));
然后在參數傳遞過程中,直接使用adaption以后的數據就可以了。
大話適配器模式由于適配器是作為彌補的一種手段,而不是作為一開始代碼設計的原則,所以,大家在代碼構思的時候盡量將接口實現統(tǒng)一這才是最棒的模式。 我們的目的就是在程序中,不要出現適配器模式,但考慮到實際,這也是不可能的,所以盡量將代碼設計符合規(guī)范是非常必要的。
ending~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78545.html
摘要:時間年月日星期二說明本文部分內容均來自慕課網。慕課網教學源碼學習源碼第一章適配器模式的簡介簡介生活中的適配器翻譯軟件插座適配器適配器模式定義適配器模式講將一個類的接口,轉換成客戶期望的另外一個接口。 時間:2017年08月29日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s.....
摘要:定義和類型定義將一個類的接口轉換成客戶期望的另一個接口,適配器模式讓那些不兼容的類可以一起工作。類型結構型類適配器模式類適配器模式使用繼承的方式去實現接口適配。它是適配器模式的核心。 0x01.定義和類型 定義:將一個類的接口轉換成客戶期望的另一個接口,適配器模式讓那些不兼容的類可以一起工作。 類型:結構型 a.類適配器模式 類適配器模式:使用繼承的方式去實現接口適配。 UML:...
摘要:本文參考于設計模式課程設計模式之適配器模式設計模式是一套被反復使用的多數人知曉的經過分類編目的代碼設計經驗的總結。第一個設計模式是適配器模式。總的來說適配器就是的模式,與修飾模式直接無感使用不同,適配器模式使用對象變?yōu)椤? 本文參考于:設計模式課程設計模式之適配器模式 設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被...
摘要:你眼中的適配器是什么樣子的呢在設計模式中也有模式叫適配器模式,一起來看看吧。定義適配器模式將一個類的接口,轉換成客戶期待的另一個接口。 你眼中的適配器是什么樣子的呢?在設計模式中也有模式叫適配器模式,一起來看看吧。 適配器是什么這不需要作者我多解釋把,打個比方,在國內用的是220V的電器,但國外有些國家是110V甚至240V的也有等等,國內的充電線就不能直接插國外的插...
摘要:適配器的適用場景代碼的復用性強。客戶端使用目標接口,與和目標接口一致的對象合作。被適配者一個現存需要適配的接口。適配器負責將的接口轉換為的接口。適配器是一個具體的類,這是該模式的核心。適配器分為類適配器和對象適配器兩種,下面將詳細講述。 適配器的適用場景 代碼的復用性強。 我們一直在使用適配器,如果 只有USB連接頭,無法將手機插到標準的插座上面充電 ,這時需要的一個適配器,一端接U...
閱讀 2535·2023-04-25 14:54
閱讀 609·2021-11-24 09:39
閱讀 1818·2021-10-26 09:51
閱讀 3867·2021-08-21 14:10
閱讀 3493·2021-08-19 11:13
閱讀 2699·2019-08-30 14:23
閱讀 1816·2019-08-29 16:28
閱讀 3364·2019-08-23 13:45