Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式
一、概述
1.目标:读取properties文件改成单例模式
二、代码
1.Test.java
1 class WakenUpEvent{ 2 3 private long time; 4 private String location; 5 private Child source; 6 7 public WakenUpEvent(long time, String location, Child source) { 8 super(); 9 this.time = time; 10 this.location = location; 11 this.source = source; 12 } 13 14 public long getTime() { 15 return time; 16 } 17 18 public void setTime(long time) { 19 this.time = time; 20 } 21 22 public String getLocation() { 23 return location; 24 } 25 26 public void setLocation(String location) { 27 this.location = location; 28 } 29 30 public Child getSource() { 31 return source; 32 } 33 34 public void setSource(Child source) { 35 this.source = source; 36 } 37 38 39 } 40 41 class Child implements Runnable { 42 43 private List<WakenUpListener> wakenUpListeners = new ArrayList<WakenUpListener>(); 44 45 public void addWakenUpListener(WakenUpListener wul){ 46 wakenUpListeners.add(wul); 47 } 48 public void wakeUp(){ 49 for(int i = 0; i < wakenUpListeners.size(); i++){ 50 WakenUpListener l = wakenUpListeners.get(i); 51 l.actionToWakenUp(new WakenUpEvent(System.currentTimeMillis(), "bed", this)); 52 } 53 } 54 55 @Override 56 public void run() { 57 try { 58 Thread.sleep(3000); 59 } catch (Exception e) { 60 e.printStackTrace(); 61 } 62 wakeUp(); 63 } 64 } 65 66 67 interface WakenUpListener { 68 public void actionToWakenUp(WakenUpEvent e); 69 } 70 71 class Dad implements WakenUpListener { 72 73 public void actionToWakenUp(WakenUpEvent e) { 74 System.out.println("Fedd the child"); 75 } 76 77 } 78 79 class GrandFather implements WakenUpListener { 80 81 public void actionToWakenUp(WakenUpEvent e) { 82 System.out.println("抱孩子"); 83 } 84 85 } 86 87 class PropertiesMgr{ 88 89 private static Properties props = new Properties(); 90 91 //只加载一次,但如果properties有更新,它不会反馈 92 static { 93 try { 94 props.load(Test.class.getClassLoader().getResourceAsStream("com/tong/observer/observer.properties")); 95 } catch (Exception e) { 96 e.printStackTrace(); 97 } 98 } 99 100 public static String getProperty(String key){ 101 return props.getProperty(key); 102 } 103 } 104 public class Test { 105 106 public static void main(String[] args) { 107 108 Child c = new Child(); 109 110 String [] observers = PropertiesMgr.getProperty("observers").split(","); 111 112 for(String s : observers){ 113 try { 114 c.addWakenUpListener((WakenUpListener)Class.forName(s).newInstance()); 115 } catch (Exception e) { 116 e.printStackTrace(); 117 } 118 } 119 new Thread(c).start(); 120 } 121 }
三、运行结果
转载于:https://www.cnblogs.com/shamgod/p/4589028.html
Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式相关推荐
- 马士兵Hibernate学习笔记
马士兵hibernate学习笔记 课程内容 6课程内容 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0 ...
- Java学习笔记——JDBC读取properties属性文件
Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...
- 学习笔记_ncl_读取nc文件中的变量_制作nc文件的方法
由于生成的文件较大较多,在超算上不方便使用matlab,只好向ncl势力低头 目的是在超算上对相关结果进行第一步简单处理后,下载到pc上再进行其他处理 ncl新手 如果是从已有的nc文件中读取变量到新 ...
- python学习笔记:读取xyz文件
在药学的Ai研发过程中,经常要制作清洗文件和处理各种文件格式.利用openBabel这样功能能够大大减轻转换过程的麻烦.然而偶然也需要应对一下场景下处理xyz文件抽取相关的坐标体系去计算小分子之间的作 ...
- 设计模式学习笔记-观察者模式(转)
http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html 1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系, ...
- 设计模式学习笔记-观察者模式
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 2. ...
- Java-马士兵设计模式学习笔记-策略模式-模拟Comparable接口
一.情况 1.目标:要在专门用于排序数据的DataSorter.java中实现对所有A类,B类,C类,D类等等的排序 2.初步想法:DataSorter.java的代码如下 public class ...
- [云炬Python学习笔记] Python读取指定文件夹下的文件
1 # -*- coding: utf-8 -*-2 import csv3 import os4 import pandas as pd5 #提取文件夹下的地址+文件名,源文件设定排序规则6 def ...
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
最新文章
- Boost:基于Boost的聊天的应用程序
- Mvc5 控制器,视图简单说明
- 输入学生成绩,并按升序排列 Ascending.java
- mscoco数据集_重磅!小目标检测的数据增广秘籍
- python设置tk退出_退出tkinter gui
- Python学习入门基础教程(learning Python)--5.2 Python读文件基础
- LaTeX 长度和单位 Lengths Units
- 微信3.1.0.67逆向-微信3.1.0.67HOOK接口(WeChatHelper3.1.0.67.dll)使用说明
- 2022年开始学习Delphi并成为Delphi程序员的5个重要原因
- MySQL 优化:Explain 执行计划详解
- 你觉得八部金刚功、八段锦、太极拳这种中国传统养生功法有效吗,请从科学与实践的角度详细阐述...
- oppo reno5什么时候上市
- 【视频格式】m3u8格式视频下载
- 通过限制挖矿病毒cpu占用率来解决挖矿病毒,简单奏效
- 第三次作业 软件产品同质化问题
- vue下载文件并重命名
- 安装一台计算机的操作系统,一台电脑可以这样来同时安装XP和WIN7两种操作系统...
- 2d有限元计算机仿真,超精密单点金刚石车削加工有限元仿真
- 公司不是我的家,那我为什么还要加班?兼说如何在公司高效提升自己的方法
- db2 编目命令\删除命令
热门文章
- shell输出没有换行符
- hive清空外表数据
- springboot抑制log中的info信息
- logs is not in the form of topic-partition or topic-partition.uniqueId-delete
- sqoop把mysql数据导入hive
- http://127.0.0.1:8000/accounts/login/总是重定向到http://127.0.0.1:8000/accounts/profile/并且报告404
- 市面上的hadoop书籍调研
- hexo 修改yelee文章标题字体颜色
- winowsformshost 的构造函数执行符合指定的绑定约束的_C# 应该允许为 struct 定义无参构造函数...
- 方差为什么用平方不用绝对值_为什么炖鸡汤,人们喜欢用母鸡而不用公鸡?原来差别这么大!...