Observer


监听器就是在事件之前再加上一段代码,为了降低耦合,写成另一个类*(监听类),并把当前的对象传递给这个类,为了再降低监听类的参数的耦合,需要把传入的参数再封装一下,封装成even。



运行程序的main代码

package com.Demo;

public class Demo {
	public static void main(String[] args) {
		Person p = new Person();
		p.registerListener(new PersonListener() {
			
			@Override
			public void doRun(Even e) {
				System.out.println(e.getP().getClass() + " is running");
			}

			@Override
			public void doEat(Even e) {
				System.out.println(e.getP().getClass() + " is eatting");
			}
		});
		p.run();
		p.eat();
	}
}

运行结果:

class com.Demo.Person is running
run........
class com.Demo.Person is eatting
eat........


Person代码:

package com.Demo;

class Person {
	private PersonListener listener;

	public void run() {
		if (listener != null) {
			listener.doRun(new Even(this));
		}
		System.out.println("run........");
	}

	public void eat() {
		if (listener != null) {
			listener.doEat(new Even(this));
		}
		System.out.println("eat........");
	}

	// 注册监听器
	public void registerListener(PersonListener listener) {
		this.listener = listener;
	}
}

监听器接口

package com.Demo;

interface PersonListener {
	
	public void doRun(Even e);

	public void doEat(Even e);
}

参数even:

package com.Demo;

class Even {
	private Person p;

	public Even(Person p) {
		this.p = p;
	}

	public Person getP() {
		return p;
	}

	public void setP(Person p) {
		this.p = p;
	}
}



  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值