介面卡模式

2021-09-27 10:38:59 字數 2682 閱讀 7379

前言:邊動手,邊動腦,才能進步,只動手不動腦,一塌糊塗

定義:

將乙個介面轉化成使用者期望的另乙個介面,使原本不相容的類可以一起工作,屬於結構型設計模式。

適用場景:

1.已經存在的類,它的方法和需求不匹配(方法結果相同或相似)

2.介面卡模式是隨著軟體維護,由於不同產品,不同廠商造成功能類似而介面不相同的解決方案

package com.ns.adapter;

/** * 通用的返回類

*/public class resultmsg

public int getcode()

public void setcode(int code)

public string getmsg()

public void setmsg(string msg)

public object getdata()

public void setdata(object data)

}

package com.ns.adapter;

/** * 舊的登入類

*/public class oldlogin

/*** 登入

*/public resultmsg login(string username, string password)

}

package com.ns.adapter;

/** * 擴充套件新的登入方式介面,只是為了抽象出驗證方法與登入方法,用來讓其他登入方式實現

*/public inte***ce iloginservice

package com.ns.adapter;

/** * qq登入

*/public class qqlogin implements iloginservice

@override

public resultmsg login(string id, object adapter)

}

package com.ns.adapter;

/** */

public class wechatlogin implements iloginservice

@override

public resultmsg login(string id, object adapter)

}

package com.ns.adapter;

/** * 手機號登入

*/public class tellogin implements iloginservice

@override

public resultmsg login(string id, object adapter)

}

package com.ns.adapter;

/** * 其他方式登入介面的整合

* 此介面以及實現類也可以省去,根據不同的登入型別抽象出不同的策略,使用策略模式來達到不同場景的登入需求

*/public inte***ce loginforother

package com.ns.adapter;

/** * 其他方式登入介面的整合實現

* 登入介面卡類,通過整合老的登入方式,並實現新的登入方式,保證舊的保留,新的可用

*/public class loginforotheradapter extends oldlogin implements loginforother

@override

public resultmsg loginforwechat(string id)

@override

public resultmsg loginfortel(string id)

@override

public resultmsg loginforregist(string username, string password)

/*** 簡單工廠模式以及策略模式的應用

*/private resultmsg processlogin(string key, class<? extends iloginservice> clazz)

return null;

} catch (instantiationexception | illegalacces***ception e)

return null;

}}

package com.ns.adapter;

/** * 測試類

*/public class testlogin

}

總結

優點:1.提高類的透明和應用,現有類復用但不需要改變

2.目標類和介面卡類解耦,提高類的可擴充套件性

缺點:1.介面卡編寫過程需要全面考慮,會增加系統的複雜度

2.降低了**的可讀性,使**更複雜

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...