1. 程式人生 > 實用技巧 >浙大版《C語言程式設計(第3版)》題目集 習題5-1 符號函式

浙大版《C語言程式設計(第3版)》題目集 習題5-1 符號函式

介面卡模式

一、簡介

介面卡模式把一個類的介面變成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠一起工作。

二、使用場景

  • 現有類不符合系統需求即介面不相容
  • 建立一個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類包括一些可能在將來引進的類 一起工作。
  • 需要一個統一的輸出介面而輸入端的型別不可預知

三、簡單實現

介面卡模式有兩種:類介面卡和物件介面卡。這裡以電源介面為例,我們知道電腦手機等電子產品的電源一般都是低於標準電壓220V的,因此就需要介面卡來解決這種不適配的狀況。

類介面卡模式

類介面卡模式是通過繼承來完成轉換的。

    //target 目標角色
    public interface FiveVolt{
        public int getVolt5();
    }
    //adaptee角色
    public class Volt220{
        public int getVolt220(){
            return 220;
        }
    }
    //adapter角色
    public class VoltAdapter extends Volt220 implements FiveVolt{

        @Override
        public int getVolt5() {
            return 5;
        }
    }

    public void Test(){
        VoltAdapter adapter=new VoltAdapter();
        adapter.getVolt5();
        }

類介面卡模式的adapter繼承了Volt220並實現FiveVolt以完成電壓轉換的目標。

物件介面卡模式

物件介面卡模式通過代理組合來完成轉換

    //target 目標角色
    public interface FiveVolt{
        public int getVolt5();
    }
    //adaptee角色
    public class Volt220{
        public int getVolt220(){
            return 220;
        }
    }
    
        public class Volt5Adapter implements FiveVolt{
     Volt220 volt220;

        public Volt5Adapter(Volt220 volt220) {
            this.volt220 = volt220;
        }

        @Override
        public int getVolt5() {
            return 5;
        }

        public int getVolt220(){
            return volt220.getVolt220();
        }
    }
    
    public void Test(){
        Volt5Adapter adapter1=new Volt5Adapter(new Volt220());
        adapter1.getVolt5();
    }

物件介面卡模式的adapter僅實現了FiveVolt介面,對於volt220則採用組合方式納入adapter中。

四、小結

Android中介面卡模式典型的應用就是ListView和RecycleView的Adapter。使用介面卡模式可以是類有更好的複用性和更好的擴充套件性。但是過多的使用會讓系統凌亂,不易整體把握。