博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式 - 两国打仗靠间谍
阅读量:6681 次
发布时间:2019-06-25

本文共 2237 字,大约阅读时间需要 7 分钟。

1 import java.util.ArrayList; 2  3 //观察者模式 4 public class Observer { 5  6     public static void main(String[] args) { 7         //间谍007 8         Spy007 spy007 = new Spy007(); 9         //两个国家雇佣了00710         Country coutryA = new CuntryA("乙国",spy007);11         Country coutryB = new CuntryB("丙国",spy007);12         //007记住了两个国家13         spy007.Attach(coutryA);14         spy007.Attach(coutryB);15         //007发现了情报16         spy007.setIntelligence("甲国研制了核武器");17         //向两个国家汇报情况18         spy007.Notify();19     }20 }21 //抽象国家类22 abstract class Country{23     protected String countryName;24     protected Spy007 spy;25     //构造函数26     public Country(String countryName, Spy007 spy) {27         this.countryName = countryName;28         this.spy = spy;29     }30     //获取情报的抽象方法31     abstract void Update();32 }33 //具体的A类国家34 class CuntryA extends Country{35 36     public CuntryA(String countryName,Spy007 spy) {37         super(countryName, spy);38     }39     //获取情报的方法40     @Override41     void Update() {42         System.out.println(countryName+"得到情报:"+spy.getIntelligence()+"决定于甲国建交");43         44     }45     46 }47 //具体的B类国家48 class CuntryB extends Country{49     public CuntryB(String countryName,Spy007 spy) {50         super(countryName,spy);51     }52 53     @Override54     void Update() {55         System.out.println(countryName+"得到情报:"+spy.getIntelligence()+"决定于甲国开战");56     }57     58 }59 //间谍00760 class Spy007{61     private ArrayList
countrys = new ArrayList
();62 //具体的情报63 private String intelligence;64 //进入国家65 public void Attach(Country country) {66 countrys.add(country);67 }68 //离开国家69 public void Detach(Country country) {70 countrys.remove(country);71 }72 //通知情报73 public void Notify() {74 for(Country c : countrys) {75 c.Update();76 }77 }78 //设定情报79 public void setIntelligence(String intelligence) {80 this.intelligence = intelligence;81 }82 //获取情报83 public String getIntelligence() {84 return intelligence;85 }86 }

输出:

    乙国得到情报:甲国研制了核武器决定于甲国建交

    丙国得到情报:甲国研制了核武器决定于甲国开战

转载于:https://www.cnblogs.com/liang-zisong/p/7987409.html

你可能感兴趣的文章
ubuntu 为rabbitmq安装web插件管理界面(为了远程查看rabbitmq) 分类...
查看>>
redis的lists类型
查看>>
js面试题1
查看>>
阿铭每日一题 day 4 20180114
查看>>
股市鬼才操盘20年总结的20条投资心得(转)
查看>>
转载:C#中的泛型
查看>>
1.4 注册系统的逻辑与结构
查看>>
NOIP模拟2017.6.11解题报告
查看>>
rpm安装mysql
查看>>
redis--主从同步,故障切换,集群搭建
查看>>
web2.0图形设计风格指南
查看>>
剑指offer数组列表
查看>>
redis(三)
查看>>
类的静态成员
查看>>
(转) Linux下Setuid命令!
查看>>
linux及安全课程总结
查看>>
纯命令行的编辑利器:用好 awk 与 sed
查看>>
IBATIS sql 小于(<) 写法 特殊符号写法
查看>>
jQuery显示和隐藏 常用的状态判断方法
查看>>
Bootstrap 模态框(Modal)插件
查看>>