当前位置:首页 > 服务端 > java常用设计模式--观察者模式简单例子

java常用设计模式--观察者模式简单例子

2022年09月17日 16:03:44服务端6
package com.ruanyun;

import java.util.List;
import java.util.Vector;

/**
* @Auther: maxw
* @Date: 2018/11/10 16:14
* @Description:观察者模式
* 基本概念:
* 观察者模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
* 这一个模式的关键对象是目标(Subject)和观察者(Observer)。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,
* 作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。
* 适用场景:
* 观察者模式,用于存在一对多依赖关系的对象间,当被依赖者变化时,通知依赖者全部进行更新。
* 因此,被依赖者,应该有添加/删除依赖者的方法,且可以将添加的依赖者放到一个容器中;且有一个方法去通知依赖者进行更新。
*/
public class Test2 {
public static void main(String args[]){
Vector<Student> students =new Vector<Student>();
Teacher teacher =new Teacher();
for(int i=0;i<5;i++){
Student student =new Student(teacher,"student"+i);
students.add(student);
teacher.addStudent(student);
}
for(Student student :students){
student.showTelphone();
}
teacher.setTelphone("100000");
for(Student student :students){
student.showTelphone();
}
teacher.setTelphone("111111");
for(Student student :students){
student.showTelphone();
}
}
}
class Teacher{
private String telphone;
private Vector<Student> students;

public Teacher() {
telphone = "";
students = new Vector();
}
//添加学生
public void addStudent(Student student){
students.add(student);
}
//移除学生
public void removeStudent(Student student){
students.remove(student);
}

public String getTelphone() {
return telphone;
}
//更新手机号码
public void setTelphone(String telphone) {
this.telphone = telphone;
notice(); //设置手机号码的时候通知学生 关键
}

private void notice(){
for(Student student : students){
student.updateTelphone();
}
}
}
class Student{
private String teachPhone;
private Teacher teacher;
private String name;

public Student(Teacher teacher, String name) {
this.teacher = teacher;
this.name = name;
}
public void showTelphone(){
System.out.println(name+"老师电话为:"+teachPhone);
}
public void updateTelphone(){
teachPhone = teacher.getTelphone();
}
}

java常用设计模式--观察者模式简单例子 _ JavaClub全栈架构师技术笔记

 

 
 

作者:MsencSir
来源链接:https://www.cnblogs.com/maxiw/p/9939905.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/42740.html

分享给朋友:

“java常用设计模式--观察者模式简单例子” 的相关文章

设计模式系列(一)—简单工厂模式

设计模式系列(一)—简单工厂模式

​ hello各位程序员大哥大姐好,上期我讲解了设计模式的概念及分类,学习了UML类图的认识,今天我们就趁热打铁,学习一下简单工厂模式,以后每一个模式会出一篇文章,供各位及我自己查阅学习。斗图还是不能忘的,为了苟且的生活,大家加油,生活不止眼前的苟且,还有远方的苟且。 第一节:简单工...

常用设计模式系列(三)—抽象工厂模式

常用设计模式系列(三)—抽象工厂模式

一、前言 各位大佬好,又是一个冷嗖嗖的日子,这个城市的天气最近一直都不太好,说下雪吧也不下,天气也不晴,让人甚是难受。前段时间周围的城市都下雪了,盼了好久的雪也没盼到,只等来了冷风作祟。基于我的心情,我来吟诗一首: ​ 《盼雪》 昨日已别大雪, 吾昼夜盼雪至。...

常用设计模式系列(六)—单例模式

常用设计模式系列(六)—单例模式

一、前言各位大佬好,由于本人的原因,拖更了几天休息了一下,吃了点好吃的,为了填饱自己的肚子,逛遍了天下美食(我所在这个城市的某个角落),所谓干饭人干饭魂,干饭人吃饭得用盆。吃饱喝足之后,活还是要干的,所以今天继续开始我们的设计模式,今天讲解设计模式之“单例模式”,单例模式算的上是在整个设计模式体系中...

java基础知识讲解(一)数据类型和运算符

java基础知识讲解(一)数据类型和运算符

Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- b...

Java 并发核心机制

Java 并发核心机制

📦 本文以及示例源码已归档在 javacore 一、J.U.C 简介 Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具类,是 Java 并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中)。...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

JAVA的JDK环境变量的配置JAVA

JAVA的JDK环境变量的配置JAVA

首先要在官网下载java 官网:http://www.oracle.com/technetwork/java/javase/downloads/ 到这个界面 选择我接受 记住该地址 最好的办法新建记事本,然后按ctrl+s保存 java环境变量的...

炒冷饭系列:设计模式 装饰模式

炒冷饭系列:设计模式 装饰模式

炒冷饭系列:设计模式 装饰模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 钢琴弹得好是艺术,文章写的好也是艺术。 一、什么是装...

我对java String的理解 及 源码浅析

我对java String的理解 及 源码浅析

摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 每天起床告诉自己,自己的目标是 ”技术 + 英语 还有生活“! -泥沙砖瓦浆木匠 一...

全网最细笔记java与kotlin的一些异同

本文主要介绍java与kotlin的一些异同 后面可能还会继续比较kotlin和dart 期待吗? 打印日志 Java System.out.print("Amit Shekhar"); S...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。