色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java觀察者模式和監(jiān)聽者模式

錢多多1年前7瀏覽0評論

Java中的觀察者模式和監(jiān)聽者模式都是常用的設(shè)計模式,用于實現(xiàn)對象之間的通信。它們的設(shè)計思想都是“觀察者”(或“監(jiān)聽者”)對象觀察(或監(jiān)聽)主體對象,一旦主體對象發(fā)生變化,就通知觀察者(或“監(jiān)聽者”)對象,讓它們采取相應(yīng)的行動。

觀察者模式實現(xiàn)了“一對多”的關(guān)系,即一個主體對象可以有多個觀察者對象,主體對象發(fā)生變化時,所有的觀察者對象都會得到通知。下面是一個Java實現(xiàn)觀察者模式的示例代碼:

// 主體對象
public class Subject {
private ArrayListobservers = new ArrayList<>();
public void attach(Observer observer) {
observers.add(observer);
}
public void detach(Observer observer) {
observers.remove(observer);
}
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
// 觀察者對象
public interface Observer {
void update();
}
// 具體觀察者對象
public class ConcreteObserver implements Observer {
private String name;
private Subject subject;
public ConcreteObserver(String name, Subject subject) {
this.name = name;
this.subject = subject;
subject.attach(this);
}
public void update() {
System.out.println(name + " received notification from subject.");
}
public void detach() {
subject.detach(this);
}
}

監(jiān)聽者模式也是實現(xiàn)對象之間的通信,但其與觀察者模式不同的是,監(jiān)聽者模式中只有一個監(jiān)聽者對象監(jiān)聽主體對象,主體對象發(fā)生變化時,就通知監(jiān)聽者對象。下面是一個Java實現(xiàn)監(jiān)聽者模式的示例代碼:

// 主體對象(被監(jiān)聽者)
public class Subject {
private ArrayListlisteners = new ArrayList<>();
public void addListener(EventListener listener) {
listeners.add(listener);
}
public void removeListener(EventListener listener) {
listeners.remove(listener);
}
public void doSomething() {
System.out.println("Subject do something.");
notifyListeners(new EventObject(this));
}
public void notifyListeners(EventObject event) {
for (EventListener listener : listeners) {
listener.handleEvent(event);
}
}
}
// 監(jiān)聽者對象
public interface EventListener {
void handleEvent(EventObject event);
}
// 具體監(jiān)聽者對象
public class ConcreteListener implements EventListener {
@Override
public void handleEvent(EventObject event) {
System.out.println("ConcreteListener received event: " + event.toString());
}
}

在實際開發(fā)中,觀察者模式和監(jiān)聽者模式都得到了廣泛應(yīng)用,如Spring開發(fā)框架中的事件監(jiān)聽、Android開發(fā)中的廣播機制等都采用了觀察者或監(jiān)聽者模式。如何選擇哪種模式,取決于項目需求和實際情況。