項目地址: GitHub - apache/skywalking-swck: Apache SkyWalking Cloud on Kubernetes 項目簡介: A bridge project between Apache SkyWalking and Kubernetes. SWCK is ...
JAVA設計模式-適配器模式
介紹
適配器模式是一種結構型模式,它主要解決介面之間的相容問題。當我們需要使用某個類的介面時,但是這個類的介面目前並不符合我們使用需求,不能直接使用,那我們可以採取調整類和介面的方式,但是如果這個介面是第三方提供的,修改不了或者類和介面目前大量使用,並且使用穩定,不能輕易改動時,我們可以使用適配器模式,在不改動這個類的前提下來滿足目前系統的需求。生活中也有例子,例如:生活中m2硬碟轉SATA介面的轉換卡、美版、港版與國行的電源適配器。
圖例
角色
- 目標介面(Target):定義滿足目前系統需求的介面,可以是抽象類或者介面。
- 適配者類(Adapter):與目前系統需求不相容的類,需要被適配的類。
- 適配器類(Adapter):實現目標抽象類或者介面和適配者類之間的轉換。
- 客戶類(Client):調用目標介面。
優點
- 將目標類和適配者類解耦,不需要改變原有代碼即可滿足目前需求。
- 具有較高的靈活性和可擴展性。
代碼示例-以m2硬碟轉SATA介面為例
InterfaceSata(Target)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: SATA介面
* @Author: xpy
* @Date: Created in 2022年10月04日 7:52 下午
*/
public interface InterfaceSata {
String installInterfaceSata();
}
HardDiskM2(Adapter)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: m2硬碟
* @Author: xpy
* @Date: Created in 2022年10月04日 7:50 下午
*/
public class HardDiskM2 {
public String installInterfaceM2(){
System.out.println("m2硬碟安裝介面是m2");
return "m2";
}
}
InterfaceAdapter(Adapter)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: 適配器
* @Author: xpy
* @Date: Created in 2022年10月04日 7:53 下午
*/
public class InterfaceAdapter implements InterfaceSata {
private HardDiskM2 hardDiskM2;
public InterfaceAdapter(HardDiskM2 hardDiskM2) {
this.hardDiskM2 = hardDiskM2;
}
public String installInterfaceSata() {
String m2 = hardDiskM2.installInterfaceM2();
// 進行m2介面轉換sata介面邏輯
// ......
return "sata";
}
}
Client
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: 客戶類
* @Author: xpy
* @Date: Created in 2022年10月04日 8:28 下午
*/
public class Client {
public static void main(String[] args) {
InterfaceSata interfaceSata = new InterfaceAdapter(new HardDiskM2());
interfaceSata.installInterfaceSata();
}
}
原文鏈接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi---shi-pei-qi-mo-shi