設計模式-介面卡模式
阿新 • • 發佈:2018-12-12
介面卡模式也是常用到的設計模式,算是一種補償模式,用來在系統後期擴充套件修改時使用,在詳細設計階段不適合使用;會先簡單介紹下介面卡模式,以及它的幾個部分,最後通過一個例子來簡單演示下;
1.定義
將一個類的介面轉換為希望的另一個介面,介面卡模式使得原來由於不相容而不能一起工作的類可以一起工作;我的理解是,某個類原來沒有某種功能,現在希望提供這種功能,那麼會將原來的功能,做一個轉換處理,來適配新的介面;
2.組成部分
1>Target:期待的介面或者功能,也就是希望原來的類具有的功能;
2>源Adaptee:原來的類,這個類中沒有提供Target的功能介面;所以我們需要做一些轉換;
3>介面卡Adapter:介面卡類是介面卡模式的核心,通過介面卡把原來的類做一些轉換處理,使得具有目標的介面功能;
3.例子
1>Target介面
public interface Target {
void request();
}
這個是目標介面,我們的類需要有得功能
2>Adapee
public class Adaptee {
public void specificRequest() {
System.out.println("特殊請求,這個是源角色");
}
}
原來的類,這個類有自己的功能,但是不具有目標的功能
3>介面卡類Adapter
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.specificRequest();
}
public static void main(String[] args) {
Target adapter = new Adapter();
adapter.request();
}
}
這裡介面卡類繼承了Adaptee類,並實現Target中的介面;
還有一種寫法,不需要繼承的,通過構造的時候引用一個例項
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
this.adaptee.specificRequest();
}
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target adapter = new Adapter(adaptee);
adapter.request();
}
}
總結:設配器模式看起來還是很簡單的,它是一種補償模式,通過引入新的介面卡類,滿足功能,而不用修改原來的類,遇到具體的需求再做分析;