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){
                //这里就是从数据源拿到的数据
                //可以进一步操作
            }
        }
}

猜你喜欢

转载自blog.csdn.net/weixin_38664232/article/details/84931586