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


相关推荐

  • 详解java重定向和转发的区别

    详解java重定向和转发的区别重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL,而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。怎么选择是重定向还是转发呢?通常情况

    2022年9月8日
  • onpropertychange替代方案[通俗易懂]

    onpropertychange替代方案1.onpropertychange的介绍onpropertychange事件就是property(属性)change(改变)的时候,触发事件。这是IE专有的!如果想兼容其它浏览器,有个类似的事件,oninput!可能大家会想到另外一个事件:onchange。但是,onchange有两个弊端。一、就是它在触发对象失去焦点时,才触发onchange事件。二、如果得用javascript改变触发对象的属性时,并不能触发onchange事件,oninput也

    2022年4月17日
  • http.sys的简单应用

    http.sys的简单应用//publicvoidRun()//{////httpListener提供一个简单,可通过编程方式控制的Http协议侦听器。此类不能被继承。//if(!HttpListener.Is

    2022年7月1日
  • 圆柱体积在线计算机,(完整版)圆柱体积计算练习题.docx

    圆柱体积在线计算机,(完整版)圆柱体积计算练习题.docx柱的表面和体积的计算练习题一个蓄水池是圆柱形的,底面面积为31.4平方分米,高2.8分米,这个水池最多能容多少升水?一个圆柱体的高是37.68厘米,它的侧面展开后恰好是正方形,这个圆柱体的体积是多少?一个圆柱形水桶的体积是24立方分米,底面积是6平方分米,桶的装满了水,求水面高是多少分米?一个圆柱形量桶,底面半径是5厘米,把一块铁块从这个量桶里取出后,水面下降厘米,这块…

    2022年9月16日
  • gromacs 安装_分子模拟软件 gromacs 安装流程

    gromacs 安装_分子模拟软件 gromacs 安装流程分子模拟软件gromacs安装流程(1)tar-zxvffftw-3.1.2.tar.gztar–zxvfgromacs-3.3.1.tar.gztar-zxvflam-7.1.3.tar.gz(2)cdlam-7.1.3./configure–prefix=/home/lam-7.1.3–without-fc–with-rsh=”ssh-x”makemakeins…

    2022年5月26日
  • php微信自动回复机器人,微信自动回复机器人功能怎么实现?[通俗易懂]

    php微信自动回复机器人,微信自动回复机器人功能怎么实现?[通俗易懂]原标题:微信自动回复机器人功能怎么实现?微信自动回复机器人功能怎么实现?最近有不少小伙伴都在询问这个问题。很多人在微信营销的过程中,都会有这样的问题,微信好友太多,想要都在第一时间回复,实在没有精力。下面小编就给大家分享如何使用微信自动回复机器人,大家再也不用担心回复不过来而忙的焦头烂额啦。首先通过米云微信软件,扫码将所以微信号登录,就可以将所有微信号的对话集成,全部聊天里整合了所有微信号的聊天…

    2022年10月1日

发表回复

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

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