最大連續子序列和 C++ 動態規劃入門
阿新 • • 發佈:2021-02-07
介面卡模式的定義
介面卡模式(Adapter Pattern)又叫作變壓器模式,它的功能是將一個類的介面變成客戶端所期望的另一種介面,從而使原本因介面不匹配而導致無法在一起工作的兩個類能夠一起工作,屬於結構型設計模式。
介面卡模式的應用場景
- 已經存在的類,它的方法和需求不匹配(方法結果相同或相似)的情況。
- 介面卡模式不是軟體設計階段考慮的設計模式,是隨著軟體維護,由於不同產品、不同廠家造成功能類似而介面不相同情況下的解決方案,有種亡羊補牢的感覺。
介面卡模式有3種形式
類介面卡、物件介面卡、介面介面卡
介面卡模式一般包含3個角色
- 目標角色(ITarget):也就是我們期望的介面。
- 源角色(Adaptee):存在於系統中,是指內容滿足客戶需求(需轉換)但介面不匹配的介面例項。
- 介面卡(Adapter):將Adaptee轉化為目標角色ITarget的類例項。
示例
- 目標角色 ITarget
package com.liguogang.AdapterPattern;
/**
* @Description: 目標角色 ITarget
* @Author: LiGuoGang
* @date: 2021/2/9 21:03
*/
public interface ITarget {
int targetMethod();
}
- 源角色 Adaptee
package com. liguogang.AdapterPattern;
/**
* @Description: 源角色 Adaptee
* @Author: LiGuoGang
* @date: 2021/2/9 21:05
*/
public class Adaptee {
public int output() {
return 0;
}
}
- 介面卡 Adapter
package com.liguogang.AdapterPattern;
/**
* @Description: 介面卡 Adapter
* @Author: LiGuoGang
* @date: 2021/2/9 21:07
*/
public class Adapter extends Adaptee implements ITarget{
@Override
public int targetMethod() {
return super.output() + 1;
}
}
- Test
package com.liguogang.AdapterPattern;
public class Test {
public static void main(String[] args) {
ITarget adapter = new Adapter();
int i = adapter.targetMethod();
System.out.println(i);
}
}
效果:通過介面卡,將0轉變為1.
原始碼地址:https://github.com/lee58/designPattern.git