请给我写一段java版委托与事件猫和老鼠且委托和事件是类事件继承委托的代码
时间: 2024-05-24 08:13:59 浏览: 17
好的,以下是Java版委托与事件猫和老鼠且委托和事件是类事件继承委托的代码:
// 定义事件类
class Event {
private List<EventHandler> handlers = new ArrayList<EventHandler>();
// 添加事件处理函数
public synchronized void addHandler(EventHandler handler) {
handlers.add(handler);
}
// 移除事件处理函数
public synchronized void removeHandler(EventHandler handler) {
handlers.remove(handler);
}
// 触发事件
public synchronized void fireEvent() {
for (EventHandler handler : handlers) {
handler.handle(this);
}
}
}
// 定义委托类
class Delegate {
private Event event = new Event();
// 添加事件处理函数
public void addHandler(EventHandler handler) {
event.addHandler(handler);
}
// 移除事件处理函数
public void removeHandler(EventHandler handler) {
event.removeHandler(handler);
}
// 触发事件
public void doSomething() {
System.out.println("猫来了!");
event.fireEvent();
}
}
// 定义事件处理函数接口
interface EventHandler {
void handle(Event event);
}
// 定义猫
class Cat {
// 处理老鼠的逃跑事件
public void handleMouseEscape(Event event) {
System.out.println("猫抓住了老鼠!");
}
}
// 定义老鼠
class Mouse {
// 处理猫的到来事件
public void handleCatComing(Event event) {
System.out.println("老鼠逃跑了!");
}
}
// 测试代码
public class Test {
public static void main(String[] args) {
// 创建委托类
Delegate delegate = new Delegate();
// 创建猫和老鼠对象
Cat cat = new Cat();
Mouse mouse = new Mouse();
// 绑定事件处理函数
delegate.addHandler(cat::handleMouseEscape);
delegate.addHandler(mouse::handleCatComing);
// 触发事件
delegate.doSomething();
}
}
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)