观察者模式写的Log打印

观察者模式写的Log打印

public interface LogObserver {
    void printLog(LogBean log);
}
public interface LogObserverable {
    void registerObserver(LogObserver o);
    void removeObserver(LogObserver o);
    void notifyObserver(LogBean obj);
}
public class Plog implements LogObserverable{

    private static Plog plog;
    public synchronized static Plog getInstance(Context context) {
        if (plog == null) {
            synchronized (Plog.class){
                if(plog==null){
                    plog = new Plog(context);
                }
            }
        }
        return plog;
    }

    private Context context;
    public Plog(Context context) {
        this.context=context.getApplicationContext();
    }

    public void print(String TAG, String log){
        Log.v(TAG,log);
        LogBean bean=new LogBean();
        bean.log=log;
        notifyObserver(bean);
    }

    private List<LogObserver> observerList=new ArrayList<>();
    @Override
    public void registerObserver(LogObserver o) {
        observerList.add(o);
    }

    @Override
    public void removeObserver(LogObserver o) {
        observerList.remove(o);
    }

    @Override
    public void notifyObserver(LogBean log) {
        for(int i=0;i<observerList.size();i++){
            LogObserver logObserver=observerList.get(i);
            logObserver.printLog(log);
        }
    }
}
public class LogBean {
    String log;

    public String getLog() {
        return log;
    }

    public void setLog(String log) {
        this.log = log;
    }
}

 

转载于:https://my.oschina.net/wfy94/blog/3028479

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101020.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 记忆化搜索的研究

    记忆化搜索的研究记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解一个状态,就将它的解保存下来,以后再次遇到这个状态的时候,就不必重新求解了。这种方法综合了搜索和动态规划两方面的优点,因而还是很有实用价值的。上传/更换附件动态规划的另一种实现形式——记忆化搜索的应用

    2022年7月26日
    11
  • mysql通配符_mysql通配符使用

    mysql通配符_mysql通配符使用mysql通配符使用:w3cchool在mysql查询中,经常会用到通配符,而且mysql的通配符和pgsql是有所不同的,甚至mysql中还可以使用正则表达式。本文就为大家带来mysql查询中通配符的使用。SQL模式匹配:“_”匹配单个字符,”\_”匹配”_”“%”匹配任意个字符,包括零个字符sql模式下的匹配,缺省是对于字母的大小写没有要求,并且sql模式下,“=”或”!=”是不能在模…

    2022年6月24日
    31
  • oracle数据库备份:

    oracle数据库备份:oracle数据库备份

    2022年7月12日
    13
  • [2018年新版]以太坊ETH挖矿教程

    [2018年新版]以太坊ETH挖矿教程一.准备工作1.硬件准备ETH以太坊挖矿主要是使用高端3G显存以上显卡来挖矿,因此你需要一台拥有以下设备的电脑:显卡:6张rx470或gtx1060以上显卡,显存推荐4G以上主板:需要有6个以上pci-e插槽,目前市面上有主板直插和转接板2种。一般来说直插6卡或者8卡主板较为稳定。电源:电源功率视显卡数量,一般6卡需要850w以上其他配件:CPU、内存、硬盘(推荐60G以上SSD)、延长线…

    2022年6月9日
    53
  • Linux安装redis和部署

    Linux安装redis和部署Linux安装redis和部署第一步:下载安装包访问https://redis.io/download到官网进行下载。这里下载最新的6.2.6版本.第二步:安装1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作tar-zxfredis-4.0.9.tar.gz2.进入解压文件目录使用make对解压的Redis文件进行编译图示:这里因为我redis的安装目录在/usr/locat/目录下,因此会有如下操作注:如果在编译过程中出现问题,有可能是安

    2022年9月28日
    0
  • 零基础学Java(4)字符串

    零基础学Java(4)字符串字符串从概念上讲,Java字符串就是Unicode字符序列。例如,字符串"Java\u2122"由5个Unicode字符J、a、v、a和™组成。Java没有内置的字符串类型,而是

    2022年7月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号