希赛考试网
首页 > 软考 > 软件设计师

观察者模式的实现java

希赛网 2024-06-09 09:58:30

观察者模式是一种被广泛应用的设计模式,用于在对象之间构建松散耦合关系。在观察者模式中,当一个对象的状态发生改变时,它通知它所依赖的所有对象,使得这些对象能够自动更新自己的状态。本文将从多个角度探讨观察者模式在Java中的实现。

实现方式

在Java中,观察者模式的实现可以采用Java自带的Observer和Observable接口。Observable类用于存储观察者对象的列表,接口Observer定义了被观察对象与观察者对象之间的通信协议。

Observable类中的主要方法包括:

- addObserver(Observer o):添加观察者对象

- deleteObserver(Observer o):删除观察者对象

- notifyObservers(Object arg):通知观察者对象状态发生改变

- setChanged():标记被观察对象状态发生改变

Observer接口中的主要方法是:

- update(Observable o, Object arg):当被观察对象状态发生改变时,观察者对象调用此方法

示例代码:

观察者实现类:

```

class ConcreteObserver implements Observer {

@Override

public void update(Observable o, Object arg) {

System.out.println(String.format("观察到对象发生变化,新状态为:%s", arg));

}

}

```

被观察者实现类:

```

class ConcreteObservable extends Observable {

private int state;

public int getState() {

return state;

}

public void setState(int newState) {

state = newState;

setChanged();

notifyObservers(state);

}

}

```

使用示例:

```

ConcreteObservable observable = new ConcreteObservable();

ConcreteObserver observer1 = new ConcreteObserver();

ConcreteObserver observer2 = new ConcreteObserver();

observable.addObserver(observer1);

observable.addObserver(observer2);

observable.setState(1);

observable.deleteObserver(observer2);

observable.setState(2);

```

观察者模式的优势

采用观察者模式具有以下优势:

1. 支持松散耦合关系

观察者模式解除了被观察对象与观察者对象之间的直接联系,使得对象之间的关系更为灵活,减少了对象之间的依赖。

2. 容易扩展

当需要添加新的观察者对象时,只需要通过addObserver()方法添加到被观察对象中即可。同时也可以很容易地对观察者对象进行扩展。

3. 支持广播通信

当被观察对象状态发生改变时,观察者对象能够自动更新状态,实现了对象之间的广播通信。

应用场景

观察者模式被广泛应用于以下场景:

1. GUI程序设计

当用户事件发生时,GUI程序通常会采用观察者模式来处理。

2. 数据库设计

数据库中的触发器(Trigger)机制可以被视为观察者模式的一种实现方式。

3. 系统设计

观察者模式能够使系统模块间解耦,提高系统的可维护性和可扩展性。

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件