观察者模式

    相信每个人在高中的时候在自习课的时候都有偷偷的玩过手机,而且 绝大部分的高中都不让学生带手机,更不用说上课玩了。所以每个人在玩的时候总是找同桌或者附近的同学帮忙看着 如果老师来了 就提醒自己一下。个人感觉这个场景跟观察者模式很像。接下来我们用java代码 简单的实现一下。

首先我们将 老师来了 同学们要做的动作抽象为一个接口

public interface IAction {
		public abstract void doSomeTing();
}

然后我们写一个玩手机的同学类,并且实现楼上的接口

public class PlayPhoneStudent implements IAction{
	private String studentName;
	PlayPhoneStudent(String studentName){
		this.studentName = studentName;
	}
	@Override
	public void doSomeTing() {
		System.out.println(studentName+"赶快放下手机,装作认真学习的样子");
	}

}

接下来 我们在写一个 观察老师来没来的同学类

public class ObserverStudent {
	private String studentName;
	ObserverStudent(String studentName){
		this.studentName =studentName;
	}
	//用来保存 在玩手机 并且叫该名同学观察老师来没来的同学
	private  List<IAction> playerPhoneStudents = new ArrayList<>();
	
	
	public void addPlayPhoneStudent (IAction playPhoneStudent) {
		playerPhoneStudents.add(playPhoneStudent);
	}
	//老师来了 通知每一个 托我们观察老师的同学
	public void tellTeacherCome() {
		for (IAction iAction : playerPhoneStudents) {
			iAction.doSomeTing();
		}
	}
}


最后写一个测试类

public class Test {
	public static void main(String[] args) {
		//首先我们先实例化3个玩手机的同学 一个不玩手机的同学
		PlayPhoneStudent s1 = new PlayPhoneStudent("s1");
		PlayPhoneStudent s2 = new PlayPhoneStudent("s2");
		PlayPhoneStudent s3 = new PlayPhoneStudent("s3");
		
		ObserverStudent noPlayPhoneStudent = new ObserverStudent("GoodStudent");
		
		//接下来 3个玩手机的同学怕玩手机被老师看到,所以叫不玩手机的那个同学帮忙看着老师来没来
		noPlayPhoneStudent.addPlayPhoneStudent(s1);
		noPlayPhoneStudent.addPlayPhoneStudent(s2);
		noPlayPhoneStudent.addPlayPhoneStudent(s3);
		
		//过了一段时间 老师来了。。
		noPlayPhoneStudent.tellTeacherCome();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值