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);
    }
}










