1. 程式人生 > >Java之“面向介面程式設計”-2

Java之“面向介面程式設計”-2

補充(2018-12-09):

其實介面的另外一個概念就是監聽,比如我要從一個地方獲取某個引數的狀態,其實有很多種方法例如:事件匯流排、廣播、介面監聽等。而在這些方法中使用介面無疑是代價(程式碼量以及過程中消耗的時間)最小的。

還是使用程式碼演示吧:

思路:建立一個單例模式的類,任何呼叫該類,都能實現對介面底層資料的監聽

定義介面:

public Interface ILogForApp{
    void getLog(String tag,String msg);
}

中間層:

/**
 *介面的上層
 */
public class LogManager{
    private static LogManager instance;
    public static LogManager getInstance(){ //double-check模式
        if(instance == null){
            synchrozied(LogManager.class){
                if(instance==null){
                    instance=new LogManager();
                }
            }
        }
        return instance;
    }

    //從主端將監聽傳遞進來
    private ILogForApp listener;
    public void setListener(ILogForApp listener){//介面實現的上層
        this.listener=listener;
    }

    public void getLog(String tag,String msg){//資料的源頭,介面實現的底層
        if(null != listener){
            listener.getLog(tag,msg);
        }
     }

}

底層:將資料傳遞進去

public void setData(String tag,String msg){

    LogManager.getInstance().getLog(tag,msg);

}

上層(實現監聽的功能):

public class Monitor extends Activity{
    @Override
    public class onCreate(Bundle savedInstanceState){
        LogManager.getInstance().setListener(new ILogForApp(){

            @Override
            public void getLog(String tag,String msg){
                //這裡就是從資料來源拿到的資料
                //可以進一步操作
            }
        }
}