一个最为经典的例子:老师与同学的例子。 场景: 一个班的老师有10个学生,老师知道这10个学生的所有信息,老师讲课,学生都能听到,老师点名,对应的同学能起来回答问题。 把这一场景简单化: 其实就是满足了这样的关系: 这个例子中的观察者模式: 用代码将这一关系表示出来更容易理解! 总结一下上面的关系,明白我们代码需要做哪些事情: 接下来具体实现一下: 从我们的代码中可以看出,实现这个小功能的核心代码是: 其实整个观察者模式中,最为重要的就是:当一个对象被修改时,则会自动通知它的依赖对象。 观察者模式主要用于一对多的关系,它在实际应用中的优势有: 感谢@Mr.ml大佬的指导
0x01.简述
0x02.理解观察者模式
具体的关系可以参考下图:
0x03.上述例子的实际代码实现
Person类:(父类)
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
Student类:
public class Student extends Person { public void daDao(){ System.out.println(super.getName()+":到!"); } }
Teacher类:
public class Teacher extends Person{ //老师保留学生的信息 private List<Student> students = new ArrayList<Student>(); public void Dao() throws InterruptedException { while(true){ int radom = (int)(Math.random()*10); Student stu=students.get(radom); System.out.println(stu.getName()+" 到了吗?"); stu.daDao(); Thread.sleep(3000); } } public void addStu(Student stu){ this.students.add(stu); } }
Test:
public class Test { public static void main(String[] args) throws InterruptedException { Teacher teacher=new Teacher(); teacher.setName("王老师"); teacher.setAge(27); for(int i=0;i<10;i++){ Student stu=new Student(); stu.setName("同学"+(i+1)); stu.setAge(18); teacher.addStu(stu); } teacher.Dao(); } }
效果展示:
0x04.回顾代码–再反思
0x05.清楚优势
0x06.明白劣势
0x07.主要应用
Spring MVC的核心处理机制:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算