观察者模式写的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 排序算法:堆排序

    排序算法:堆排序

    2021年10月5日
    48
  • 通过ProGet搭建一个内部的Nuget服务器

    通过ProGet搭建一个内部的Nuget服务器

    2022年2月21日
    49
  • 树莓派 Raspberry Pi 连接 WiFi

    树莓派 Raspberry Pi 连接 WiFi说明开启Wifi的不同情况说明:第一种情况:有显示器和鼠标键盘1.1:桌面操作开启WiFi,包含桌面图形的系统(RaspbianStretchwithdesktop)1.2:通过树莓派配置,适用带桌面或仅命令行的系统。1.3:直接修改配置文件,适用带桌面或仅命令行的系统。第二种情况:无显示器和鼠标键盘2.1:使用另一台可用电脑编辑SD卡(但我尝试不成功,ORZ,望…

    2022年5月18日
    42
  • imwrite函数 matlab_imwrite

    imwrite函数 matlab_imwrite一、imread直接读取图片数据。示例一下面这段代码读取一张图片并显示出来filename=’e.bmp’;imgRgb=imread(filename);%读入一幅彩色图像imshow(imgRgb);%显示彩色图像示例二下面这段代码把24位真彩色位图转为灰度图像filename=’e.bmp’;imfinfo(filename)%查看图像文件信息imgRgb=imr…

    2022年10月4日
    3
  • BeanCopier_protobuf的简单使用

    BeanCopier_protobuf的简单使用BeanCopier的简单使用cglib包下的一个类.简单栗子//创建实例.BeanCopiercopier=BeanCopier.create(source.getClass(),target.getClass(),false);//Copy操作copier.copy(person1,person2,null);注意到:第三个参数userConve…

    2025年9月14日
    9
  • C++数组初始化[通俗易懂]

    C++数组初始化[通俗易懂]C++数组初始化定义:int*pia=newint[10];// arrayof10uninitialized ints此 new 表达式分配了一个含有10个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete…

    2022年7月18日
    24

发表回复

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

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