观察者模式写的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年7月3日 下午4:00
下一篇 2021年7月3日 下午5:00


相关推荐

  • Ubuntu18安装Edge

    Ubuntu18安装Edge1、通过以具有sudo特权的用户身份运行以下命令来更新程序包索引并安装依赖项:sudoaptupdatesudoaptinstallsoftware-properties-commonapt-transport-httpswget2、使用以下命令导入MicrosoftGPG密钥wget:wget-qhttps://packages.microsoft.com/keys/microsoft.asc-O-|sudoapt-keyadd-3、并通过键入以下命令启用Ed

    2022年7月21日
    13
  • oracle与mysql的区别面试题_oracle和db2的主要区别

    oracle与mysql的区别面试题_oracle和db2的主要区别Oracle与Mysql区别Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。Oracle支持大并发,大访问量,是OLTP最好的工具。安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。Oracle也Mysql操作上的一些区别①主键Mysql一般使用自动增长类型,在创建表时只要指定表的主键为

    2025年11月16日
    3
  • 复制粘贴网页上的文字有的字粘贴不上_网页无法复制的文字怎么复制

    复制粘贴网页上的文字有的字粘贴不上_网页无法复制的文字怎么复制当你在浏览一些网站时,是否有遇到过无法复制粘贴的情况。看到一篇好的文章,或者一段好的语句,想要复制下来,却发现无法使用复制粘贴功能,这是该网站进行了加密设置。而你又不想屏幕截图再OCR识别,那该怎么办?桌面天下的小编有办法!从浏览器的相关功能下手如果你使用的是IE浏览器的话,我们可以更改其相关设置,屏蔽掉网站的某些功能就能达到目的了。安全设置帮你忙:启动IE→点击菜单“工具”中“Internet选…

    2022年10月13日
    4
  • 深度学习 — 卷积神经网络CNN(LeNet-5网络详解)

    深度学习 — 卷积神经网络CNN(LeNet-5网络详解)卷积神经网络 Convolutiona CNN 是一种前馈型的神经网络 其在大型图像处理方面有出色的表现 目前已经被大范围使用到图像分类 定位等领域中 相比于其他神经网络结构 卷积神经网络需要的参数相对较少 使的其能够广泛应用 本节打算先介绍背景和简单的基本概念术语 然后详细介绍 LeNet 5 网络 其工作流程大家需要先搞清楚 学习原理其实是基于 BP 学习原理的 只

    2026年3月16日
    3
  • python 数组添加数组_Python添加到数组[通俗易懂]

    python 数组添加数组_Python添加到数组[通俗易懂]python数组添加数组Pythondoesn’thaveanyspecificdatatypeasanarray.WecanuseListthathasallthecharacteristicsofanarray.Python没有任何特定的数据类型作为数组。我们可以使用具有数组所有特征的List。Pythonarraymodulecan…

    2022年8月13日
    6
  • iic通信协议是什么[通俗易懂]

    iic通信协议是什么[通俗易懂] iic通信协议是什么  IIC协议是二线制,信号线包含SDA和SCL,且信号线是双向的,开路结构,需要通过上拉电阻到VCC,具体的电阻值影响的是信号反应速度和驱动能力。  首先,IIC通信与UART,还有SPI统称为串行接口通信,不过它们之间还是有区别的,如UART的负电平逻辑,还有UART通信不需要时钟,只需要特定的波特率即可,SPI与IIC都可以有一个主机,多个从机的情况,…

    2022年6月9日
    51

发表回复

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

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