Java之“面向介面程式設計”-2
阿新 • • 發佈:2018-12-12
補充(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){ //這裡就是從資料來源拿到的資料 //可以進一步操作 } } }