设计模式代码实战-观察者模式

server/2024/10/21 10:06:48/

1、问题描述

小明所在的学校有一个时钟(主题),每到整点时,它就会通知所有的学生(观察者)当前的时间,请你使用观察者模式实现这个时钟通知系统。
注意点:时间从 0 开始,并每隔一个小时更新一次。

输入示例
2
Alice
Bob
3
输出示例
Alice 1
Bob 1
Alice 2
Bob 2
Alice 3
Bob 3

2、观察者模式

主要逻辑是在主题中,负责观察者的增删改和通知,在主题中的通知方法中,通知所有的观察者。
请添加图片描述

3、代码

import com.sun.java.accessibility.util.TopLevelWindowListener;import java.util.*;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int number=Integer.parseInt(sc.nextLine());ConcreteClock c=new ConcreteClock();for(int i=0;i<number;i++){c.CreateStudent(new Student(sc.nextLine()));}int n=Integer.parseInt(sc.nextLine());for(int i=1;i<=n;i++){c.NotifyStudent(i);}}
}interface Clock{void CreateStudent(Student s);void NotifyStudent(int tag);
}class ConcreteClock implements Clock{private List<Student> list;public ConcreteClock(){list=new ArrayList<>();}@Overridepublic void CreateStudent(Student s) {list.add(s);}@Overridepublic void NotifyStudent(int tag) {for(Student tmp:list){tmp.update(tag);}}
}class Student{private  String name;public Student(String name){this.name=name;}public void update(int time){System.out.println(this.name+" "+time);}
}

http://www.ppmy.cn/server/4987.html

相关文章

Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. 起步依赖3. 自动配置3.1 JacksonPrope…

Uni-app中实现数据选择并回传给上个页面的方法

当我们在Uni-app中进行页面间数据传递时&#xff0c;通常会涉及到数据的选择以及回传给上个页面的需求。为了达到这个目的&#xff0c;我们可以利用Uni-app提供的事件机制和页面导航方法来实现。以下是一种实现方式&#xff1a; 数据选择并回传给上个页面的方法 第一步&#…

Go语言中通过数据对齐降低内存消耗和提升性能

数据对齐是一种安排数据分配方式以加速 CPU 访问内存的方法。 不了解这个概念会导致额外的内存消耗甚至性能下降。 要了解数据对齐的工作原理,让我们首先讨论没有它会发生什么。假设我们分配两个变量,一个 int32 类型的 (32 B) 和一个 int64类型的(64 B): var i int32…

java学习笔记3

5. 多重循环和程序调试 5.1 多重循环 多重循环是指循环中嵌套循环结构 多重循环注意事项 各种循环可以互相嵌套一般不要超过三层嵌套外层循环变化一次,内层循环要全部执行完代码 **需求1:**使用循环嵌套输出10*10的矩形 public static void demo() {for (int i = 0; i <…

电商技术揭秘三十:知识产权保护浅析

电商技术揭秘相关系列文章&#xff08;上&#xff09; 相关系列文章&#xff08;中&#xff09; 电商技术揭秘二十&#xff1a;能化供应链管理 电商技术揭秘二十一:智能仓储与物流优化(上) 电商技术揭秘二十二:智能仓储与物流优化(下) 电商技术揭秘二十三&#xff1a;智能…

AppBuilder升级!工作流编排正式上线!AssistantsAPI开放邀测!

>>【v0.5.3版本】 上线时间&#xff1a;2024/4/14 关键发版信息&#xff1a; 低代码态&#xff1a;新增工作流&#xff0c;低代码制作组件 自定义组件&#xff1a;支持用户自定义创建组件&#xff0c;并被Agent自动编排调用
 工作流框架&#xff1a;组件支持流式编排…

XiaodiSec day017 Learn Note 小迪渗透学习笔记

XiaodiSec day017 Learn Note 小迪渗透学习笔记 记录得比较凌乱&#xff0c;不尽详细 day 17 主要内容&#xff1a; php 框架 thinkPHPyiilaravel 使用 fofa 搜索 thinkphp 市面上 thinkphp5 版本较多 url 结构 域名/.php(文件名)/index(目录)/index(函数名)模块名-控…

Matlab|【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

目录 1 主要内容 程序主要内容 上层微网群模型 下层微网模型 模型流程图 2 部分程序 3 程序结果 4 下载链接 1 主要内容 之前发布了华电学报的复现程序《基于目标级联法的微网群多主体分布式优化调度》&#xff0c;具体链接为【防骗版】基于目标级联法的微网群多主体分…