设计模式代码实战-观察者模式
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<>();
}
@Override
public void CreateStudent(Student s) {
list.add(s);
}
@Override
public 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);
}
}
原文地址:https://blog.csdn.net/vince1998/article/details/137826546
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!