0% found this document useful (0 votes)
16 views2 pages

Observer Pattern

Uploaded by

Demirhan İzer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views2 pages

Observer Pattern

Uploaded by

Demirhan İzer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Observer Pattern:

// Observer interface defining the update method


public interface Observer {
void update(String message);
}

import java.util.ArrayList;
import java.util.List;

// Subject or Observable class that maintains a list of observers and notifies them of changes
public class Subject {
private List<Observer> observers = new ArrayList<>();
private String state;

public void attach(Observer observer) {


observers.add(observer);
}

public void detach(Observer observer) {


observers.remove(observer);
}

public void setState(String state) {


this.state = state;
notifyObservers();
}

private void notifyObservers() {


for (Observer observer : observers) {
observer.update(state);
}
}
}

// Concrete observer implementations


public class ConcreteObserver1 implements Observer {
@Override
public void update(String message) {
System.out.println("ConcreteObserver1 received update: " + message);
}
}

public class ConcreteObserver2 implements Observer {


@Override
public void update(String message) {
System.out.println("ConcreteObserver2 received update: " + message);
}
}

public class Main {


public static void main(String[] args) {
Subject subject = new Subject();

Observer observer1 = new ConcreteObserver1();


Observer observer2 = new ConcreteObserver2();

subject.attach(observer1);
subject.attach(observer2);

subject.setState("New state!"); // Notifies both observers

subject.detach(observer2); // Detach one observer

subject.setState("Another state!"); // Notifies only the remaining observer


}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy