java小白设计模式之观察者模式
观察者模式:
对象之间多对一依赖的一种设计方案,被依赖对象为Subject(一),依赖对象为Observer(多),Subject通知Observer变化
直接代码:
package com.wz.twoObserver;
public interface Subject {
public void add(Observer student);
public void del(Observer student);
public void mNotify();
}
package com.wz.twoObserver;
public interface Observer {
public void update(String name, String sex, String subject);
}
package com.wz.twoObserver; import java.util.ArrayList; /**
* 教师类
*
* @author Administrator
* @create 2018-04-18 11:50
*/
public class Teacher implements Subject{ private String name; private String sex;
// 学科
private String subject; private ArrayList<Observer> studentList; // 记住要将集合初始化
public Teacher() {
this.studentList = new ArrayList<>();
} public String getName() {
return name;
} public String getSex() {
return sex;
} public String getSubject() {
return subject;
} public void teacherUpdate(){
mNotify();
} public void setTeacher(String name, String sex, String subject){
this.name = name;
this.sex = sex;
this.subject = subject;
teacherUpdate();
} @Override
public void add(Observer student) {
studentList.add(student);
} @Override
public void del(Observer student) {
studentList.remove(student);
} @Override
public void mNotify() {
for (int i = 0; i < studentList.size() ; i++) {
studentList.get(i).update(name,sex,subject);
}
}
}
package com.wz.twoObserver; /**
* 学生类
*
* @author Administrator
* @create 2018-04-18 11:53
*/
public class Student implements Observer{ private String name; private String sex;
// 学科
private String subject; @Override
public void update(String name, String sex, String subject){
this.name = name;
this.sex = sex;
this.subject = subject;
display();
} public void display(){
System.out.println("教师姓名:" + name);
System.out.println("教师的性别:" + sex);
System.out.println("教师的学科:" + subject);
System.out.println("=================================");
} }
package com.wz.twoObserver; /**
* 学生类
*
* @author Administrator
* @create 2018-04-18 11:53
*/
public class Student1 implements Observer{ private String name; private String sex;
// 学科
private String subject; @Override
public void update(String name, String sex, String subject){
this.name = name;
this.sex = sex;
this.subject = subject;
display();
} public void display(){
System.out.println("教师姓名:" + name);
System.out.println("教师的性别:" + sex);
System.out.println("教师的学科:" + subject);
System.out.println("=================================");
} }
package com.wz.twoObserver; /**
* 学生类
*
* @author Administrator
* @create 2018-04-18 11:53
*/
public class Student2 implements Observer{ private String name; private String sex;
// 学科
private String subject; @Override
public void update(String name, String sex, String subject){
this.name = name;
this.sex = sex;
this.subject = subject;
display();
} public void display(){
System.out.println("教师姓名:" + name);
System.out.println("教师的性别:" + sex);
System.out.println("教师的学科:" + subject);
System.out.println("=================================");
} }
package com.wz.twoObserver; /**
* 测试类
*
* @author Administrator
* @create 2018-04-18 12:12
*/
public class TestMain { public static void main(String[] args) {
Teacher t1 = new Teacher();
Student s = new Student();;
Student1 s1 = new Student1();;
Student2 s2 = new Student2(); t1.add(s);
t1.add(s1);
t1.add(s2);
t1.setTeacher("郑爽","女","舞蹈");
System.out.println("======================================");
t1.del(s);
t1.setTeacher("杨洋","男","演技"); } } 自我感觉这个模式不是特别的理解,看的视频是以天气预报为例,我这以教师和学生为例,开始郑爽老师有3个学生,后来换成杨洋老师了,学生s就退学了,就剩下学生s1和s2的
java小白设计模式之观察者模式的更多相关文章
- JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明
1----------------------观察者模式------------------------------ 观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的 ...
- Java常见设计模式之观察者模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述观察者(Observer)模式的: 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Mo ...
- JAVA基础——设计模式之观察者模式
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependen ...
- 理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的“观察者模式”,它适 ...
- java设计模式之观察者模式以及在java中作用
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependen ...
- 什么?女神发了朋友圈,快来围观之Java设计模式:观察者模式
目录 观察者模式 示例 定义 设计原则 意图 主要解决问题 何时使用 优缺点 女神和追求者的故事 Java中的实现 观察者模式 示例 微信公众号,关注就可以收到推送的消息,取消关注就不会收到 定义 定 ...
- java_设计模式_观察者模式_Observer Pattern(2016-07-27)
看了好几篇文章,最终还是觉得<Head First 设计模式>举得例子比较符合观察者模式. 观察者模式概述: 观察者模式有时被称作发布/订阅模式,它定义了一种一对多的依赖关系,让多个观察者 ...
- 设计模式之观察者模式(Observable与Observer)
设计模式之观察者模式(Observable与Observer) 好久没有写博客啦,之前看完了<设计模式之禅>也没有总结一下,现在回忆一下设计模式之观察者模式. 1.什么是观察者模式 简单情 ...
- (@WhiteTaken)设计模式学习——观察者模式
忙里抽闲,继续学习设计模式,作为自己的读书笔记,这次介绍Java下实现的观察者模式. 观察模式需要了解的三个概念: 被观察者:被观察的对象,发生变化会通知观察者集合(存放观察者的容器) 观察者:有up ...
随机推荐
- vue-过渡动画
本篇资料参考于官方文档: http://cn.vuejs.org/guide/transitions.html 概述: Vue 在跳转页面时,提供多种不同方式的动画过渡效果. ●in-out:新元素先 ...
- java基础笔记(8)----接口
接口 是特殊的抽象类,纯抽象类---所有方法都是抽象方法 接口和抽象类的区别: 相同点: 编译后,会分别生成对应的.class文件 都不能创建对象(实例化),但是可以生成引用(使用多态) 不同点: 抽 ...
- wps中如何插入参考文献
最近学校论文规定要将参考文献在正文中引用,所以自己对这一方面做一下总结:点击插入尾注, 1:打开你的论文 2:点击"引用"--"插入尾注" 3:你会发现出现的不 ...
- 201621123035 《Java程序设计》第1周学习总结
1.本周学习总结 本周学习内容:Java平台概论.认识JDK规范与操作.了解JVM.JRE与JDK.撰写Java原始码.path是什么 关键词:JVM.JRE.JDK 联系:JVM是Java虚拟机的缩 ...
- Dijkstra算法课后补分博客
题目名称:Dijkstra算法 题目要求:课上给出相关附图,求解附图顶点A的单源最短路径. 附图: 做题过程 1.了解Dijkstra算法的相关知识,包括定义以及使用方法. 定义:Dijkstra算法 ...
- labview与单片机串口通信
labview与单片机串口通信 VISA是虚拟仪器软件体系结构的缩写(即Virtual Instruments Software Architecture),实质上是一个I/O口软件库及其规范的总 ...
- bzoj 4399 魔法少女LJJ
4399: 魔法少女LJJ Time Limit: 20 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?i ...
- JAVA_SE基础——47.接口
如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另一种方法来定义,即接口~ 在定义接口时,需要用interface关键字来声明,具体实例如code1 接口的定义格式:interface 接口名{ ...
- 非PE病毒介绍
1.宏病毒 1.1 介绍 本文中的宏特制office系列办公软件中的宏,Microsoft Office中对宏的定义为"宏就是能够组织在一起的,可以作为一个独立命令来执行的一系列Word 命 ...
- 批量检测GoAhead系列服务器中Digest认证方式的服务器弱口令
最近在学习用python写爬虫工具,某天偶然发现GoAhead系列服务器的登录方式跟大多数网站不一样,不是采用POST等方法,通过查找资料发现GoAhead是一个开源(商业许可).简单.轻巧.功能强大 ...