`
kinglun
  • 浏览: 41891 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

observe

阅读更多
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深度解析》 在前端开发领域,开源库是开发者们的重要资源,它们提供了丰富的功能和工具,极大地提升了开发效率。本文将深入探讨一个名为"meteor-observe-sequence"的前端开源库...

    前端项目-object-observe.zip

    在前端开发领域,Object.observe() 是一个用于监听和响应JavaScript对象属性变化的API,它在ES7提案中被提出。然而,由于性能和设计上的考量,这个特性在后来的版本中被废弃,取而代之的是更高效且功能更为丰富的...

    C++设计模式实现--Observe

    **C++设计模式实现——观察者模式(Observe)** 观察者模式,也称为发布-订阅模式或事件监听模式,是软件设计模式中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    Android代码-Rx.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尝试兼容.zip

    Object.observe, Object.observe polyfill/shim尝试兼容 其他选项MaxArt2501已经经开始了自己的Object.observe polyfill,看看他的提交历史和推理,让我认为它可以能会很好地支持。 如果你寻找一个 Object.observe ...

    Observe IT配置文档

    Observe IT配置文档,关于用户行为监控很好的软件,资源占用极少。

    Android开发,使用eventbus、livedata、observe、stateflow、sharedflow进行数据发送

    Android开发,通过使用eventbus、livedata、observe、stateflow、sharedflow进行数据发送,并且封装了livedataBus、BaseObservable、ShareFlowBus和StateFlowBus

    observe-js, 用于观察数组对象和PathValues的库.zip

    observe-js, 用于观察数组对象和PathValues的库 学习技术:为什么要观察 js?观察js是一个用来观察JavaScript数据变化的库。 它公开了一个高级 API,使用 Object.observe ( 如果可用的话),否则执行脏检查。 观察js...

    matlab摄像头编程observe函数

    该程序能连续地读取本地图像文件、internet上的图像文件,或者捕获摄像头视频,或者捕获屏幕视频,并生成一个avi文件。

    C语言课件_observe7pk_c语言_C语言_书_C语言课件

    "C语言课件_observe7pk_c语言_C语言_书_C语言课件"这个标题表明这是一份关于C语言的学习资料,可能包括课件、讲义或教程,适用于配合《红皮书》(通常是《C程序设计语言》的通俗说法,作者为Brian W. Kernighan和...

    java 观察者模式 (Observe)

    ### Java观察者模式详解 #### 引言:深入探索观察者模式 观察者模式(Observer)是设计模式中的一种常用模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听某一主题对象。当主题对象的状态发生...

    星穹铁道跃迁观测工具(Star Rail Warp Observe, STARWO)

    《星穹铁道跃迁观测工具(Star Rail Warp Observe, STARWO)——基于C#/.NET技术的深度解析》 星穹铁道跃迁观测工具(STARWO)是一款专为游戏《星穹铁道》设计的辅助软件,它利用C#编程语言和.NET框架的强大功能,...

    observe_evented:Object.observe和Array.observe变得容易

    一个使Array.observe和Object.observe易于使用的Javascript类。 Observe_evented的特长是将本机API返回的一批更改分为原子事件和一致事件。 它还提供了多个选项,使它们更易于处理。 在上进行测试。 该库没有依赖...

    vue-observe-visibility:检测何时元素在页面上变得可见或隐藏

    npm install --save vue-observe-visibility :warning: 该插件使用了并非在所有浏览器中都支持的 (当前在Edge,Firefox和Chrome中受支持)。 您需要包括一个才能使其在不兼容的浏览器上运行。 进口 import Vue ...

    港股公司研究-通达集团 new products need time to observe growth potential

    【港股公司研究-通达集团 new products need time to observe growth potential】 通达集团(Tongda Group)是一家在港股上市的公司,专注于提供消费电子产品外壳产品的一站式服务。集团在手机、电器及笔记本电脑...

    Swift 使用 Observe 监测页面滚动的实现方法

    Swift 使用 Observe 监测页面滚动的实现方法 在 Swift 中, Observe 是一种常用的监听机制,用于监测对象的变化。今天,我们将讨论如何使用 Observe 监测页面滚动的实现方法。 首先,让我们了解一下 Observe 的...

    PVmam_POcode_boost.zip_Boost_perturb and observe_pv boost conver

    perturb and observe PV boost converter

    Observe:网站扫描工具

    Observe是一款专为此目的设计的工具,它能够帮助用户收集从网站主页获取的观察数据,以便进行安全分析和漏洞检测。本文将深入探讨Observe的工作原理、主要功能以及PHP在其中的角色。 首先,我们要理解Observe的基本...

    react-observe:即将推出的 React Observe API 的完整 polyfill

    即将推出的 React Observe API 的完整 polyfill 不是高阶组件,不是 mixin 还有其他用于 Observe API 的 polyfill。 这个从他们那里得到了很多灵感,但它的工作方式有点不同。 您可以像使用高阶组件一样使用它。 ...

    observe-plus:一个包装 Object.observeArray.observe 并添加有用功能的库,例如observeOnce、pauseresume、细粒度事件和一次性模式

    Observe+(现在观察嵌套对象/数组!) Observe+ 是一个基于的库,增加了以下功能: 对单个属性/索引/事件类型进行细粒度观察 观察嵌套对象和数组 在发布所有事件之前暂停/恢复对数据结构进行批量更新 在事件...

Global site tag (gtag.js) - Google Analytics