【GOF23設計模式】_適配器模式、對象適配器、類適配器、開發中場景JAVA235

來源:http://www.bjsxt.com/
一、S03E235_01【GOF23設計模式】_適配器模式、對象適配器、類適配器、開發中場景
結構型模式

適配器模式
生活中的場景

什麼是適配器模式

筆記本電腦只有USB接口,新買的鍵盤是PS2接口的,需要用適配器轉接一下
client:筆記本
adaptee:PS2鍵盤
target:USB接口
adapter:適配器
下面的場景,如何解決

package com.test.adapter;
/**
 * 適配器(類適配器方式)
 * (相當於USB和PS/2的轉接器)
 */
public class Adapter extends Adaptee implements Target{
    @Override
    public void handleReq() {
        super.request();
    }
}

package com.test.adapter;
/**
 * 適配器(對象適配器方式,使用了組合的方式跟被適配對象整合)
 * (相當於USB和PS/2的轉接器)
 */
public class Adapter2 implements Target{
    private Adaptee adaptee;

    @Override
    public void handleReq() {
        adaptee.request();
    }

    public Adapter2(Adaptee adaptee) {
        super();
        this.adaptee = adaptee;
    }
}
package com.test.adapter;
/**
 * 客戶所期待的接口
 */
public interface Target {
    void handleReq();
}
package com.test.adapter;
/**
 * 被適配的類
 * (相當於例子中的PS/2鍵盤)
 */
public class Adaptee {
    public void request(){
        System.out.println("可以完成客戶需要的功能");
    }
}
package com.test.adapter;
/**
 * 客戶端類
 * (相當於例子中的筆記本,只有USB接口)
 */
public class Client {
    public void test1(Target t){
        t.handleReq();
    }

    public static void main(String[] args) {
        Client c = new Client();
        Adaptee a = new Adaptee();

        //類適配器方式
        //Target t = new Adapter();

        //對象適配器方式
        Target t = new Adapter2(a);

        c.test1(t);
    }
}
控制檯輸出:
可以完成客戶需要的功能

UML

類適配器

工作中的場景

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章