package observe;
public class Boss
{
private int status = 1;//0为老板出去,1为老板进来
public int getStatus()
{
return status;
}
public void setStatus(int status)
{
this.status = status;
}
}
package observe;
public interface Staff
{
public void goodBehave();
public void badBehave();
}
package observe;
public class StaffA implements Staff
{
public void goodBehave()
{
System.out.println("StaffA好好工作!");
}
public void badBehave()
{
System.out.println("StaffA打Dota");
}
}
package observe;
public class StaffB implements Staff
{
public void goodBehave()
{
System.out.println("StaffB好好工作!");
}
public void badBehave()
{
System.out.println("StaffB看NBA!");
}
}
package observe;
import java.util.ArrayList;
import java.util.List;
public class Proscenium
{
private Boss boss;
private List<Staff> staffs;//可以自己决定通知那些员工
public void addStaff(Staff staff)
{
staffs.add(staff);
}
public void delStaff(Staff staff)
{
staffs.remove(staff);
}
public Proscenium()
{
boss = new Boss();
staffs = new ArrayList<Staff>();
}
public void notice()
{
int status = boss.getStatus();
if(staffs.size()<=0)
{
return;
}
if( status == 1)//1老板来了 全部认真工作
{
System.out.println("老板来了,请注意.....");
for (Staff staff : staffs)
{
staff.goodBehave();
}
boss.setStatus(0);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
notice();//自己调用下自己,改变boss的状态。其实用线程好控制些
}else {//全部做自己想做做出事
System.out.println("老板走了,请随意....");
for (Staff staff : staffs)
{
staff.badBehave();
}
}
}
}
package observe;
public class Test {
public static void main(String[] args)
{
Proscenium proscenium = new Proscenium();
proscenium.addStaff(new StaffA());
proscenium.addStaff(new StaffB());
proscenium.notice();
}
}
/**
* 观察者模式:一个对象proscenium监视着一个对象boss,boss放生一丁点变化后,proscenium就会
* 通知其他关联的对象staff做相应的操作,一对多操作
*/
分享到:
相关推荐
《前端开源库Meteor Observe Sequence深度解析》 在前端开发领域,开源库是开发者们的重要资源,它们提供了丰富的功能和工具,极大地提升了开发效率。本文将深入探讨一个名为"meteor-observe-sequence"的前端开源库...
在前端开发领域,Object.observe() 是一个用于监听和响应JavaScript对象属性变化的API,它在ES7提案中被提出。然而,由于性能和设计上的考量,这个特性在后来的版本中被废弃,取而代之的是更高效且功能更为丰富的...
**C++设计模式实现——观察者模式(Observe)** 观察者模式,也称为发布-订阅模式或事件监听模式,是软件设计模式中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的...
Rx.Observe RxJava2 ready ! Create an interface with @Observe annotated method public class User { private int age; @Observe public int getAge() { return age; } @Observe public void setAge...
Object.observe, Object.observe polyfill/shim尝试兼容 其他选项MaxArt2501已经经开始了自己的Object.observe polyfill,看看他的提交历史和推理,让我认为它可以能会很好地支持。 如果你寻找一个 Object.observe ...
Android开发,通过使用eventbus、livedata、observe、stateflow、sharedflow进行数据发送,并且封装了livedataBus、BaseObservable、ShareFlowBus和StateFlowBus
observe-js, 用于观察数组对象和PathValues的库 学习技术:为什么要观察 js?观察js是一个用来观察JavaScript数据变化的库。 它公开了一个高级 API,使用 Object.observe ( 如果可用的话),否则执行脏检查。 观察js...
该程序能连续地读取本地图像文件、internet上的图像文件,或者捕获摄像头视频,或者捕获屏幕视频,并生成一个avi文件。
"C语言课件_observe7pk_c语言_C语言_书_C语言课件"这个标题表明这是一份关于C语言的学习资料,可能包括课件、讲义或教程,适用于配合《红皮书》(通常是《C程序设计语言》的通俗说法,作者为Brian W. Kernighan和...
### Java观察者模式详解 #### 引言:深入探索观察者模式 观察者模式(Observer)是设计模式中的一种常用模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听某一主题对象。当主题对象的状态发生...
Observe IT配置文档,关于用户行为监控很好的软件,资源占用极少。
《星穹铁道跃迁观测工具(Star Rail Warp Observe, STARWO)——基于C#/.NET技术的深度解析》 星穹铁道跃迁观测工具(STARWO)是一款专为游戏《星穹铁道》设计的辅助软件,它利用C#编程语言和.NET框架的强大功能,...
一个使Array.observe和Object.observe易于使用的Javascript类。 Observe_evented的特长是将本机API返回的一批更改分为原子事件和一致事件。 它还提供了多个选项,使它们更易于处理。 在上进行测试。 该库没有依赖...
npm install --save vue-observe-visibility :warning: 该插件使用了并非在所有浏览器中都支持的 (当前在Edge,Firefox和Chrome中受支持)。 您需要包括一个才能使其在不兼容的浏览器上运行。 进口 import Vue ...
【港股公司研究-通达集团 new products need time to observe growth potential】 通达集团(Tongda Group)是一家在港股上市的公司,专注于提供消费电子产品外壳产品的一站式服务。集团在手机、电器及笔记本电脑...
Swift 使用 Observe 监测页面滚动的实现方法 在 Swift 中, Observe 是一种常用的监听机制,用于监测对象的变化。今天,我们将讨论如何使用 Observe 监测页面滚动的实现方法。 首先,让我们了解一下 Observe 的...
perturb and observe PV boost converter
Observe是一款专为此目的设计的工具,它能够帮助用户收集从网站主页获取的观察数据,以便进行安全分析和漏洞检测。本文将深入探讨Observe的工作原理、主要功能以及PHP在其中的角色。 首先,我们要理解Observe的基本...
即将推出的 React Observe API 的完整 polyfill 不是高阶组件,不是 mixin 还有其他用于 Observe API 的 polyfill。 这个从他们那里得到了很多灵感,但它的工作方式有点不同。 您可以像使用高阶组件一样使用它。 ...
Observe+(现在观察嵌套对象/数组!) Observe+ 是一个基于的库,增加了以下功能: 对单个属性/索引/事件类型进行细粒度观察 观察嵌套对象和数组 在发布所有事件之前暂停/恢复对数据结构进行批量更新 在事件...