Skip to content

Instantly share code, notes, and snippets.

@theahmadzai
Created May 14, 2019 17:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theahmadzai/8a3a43149851242c6eaf9748631c3184 to your computer and use it in GitHub Desktop.
Save theahmadzai/8a3a43149851242c6eaf9748631c3184 to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
class DogEvent {
public String message;
}
@FunctionalInterface
interface DogObserver {
void update(DogEvent event);
}
class Dog {
private ArrayList<DogObserver> observers = new ArrayList<>();
public Dog() {
}
public void hey() {
DogEvent event = new DogEvent();
event.message = "I'm Ready" + Math.random();
notifyDogObservers(event);
}
public void addDogObserver(DogObserver observer) {
observers.add(observer);
}
private void notifyDogObservers(DogEvent event) {
observers.forEach((DogObserver observer) -> {
observer.update(event);
});
}
}
class Person {
public Person() {
Dog dog = new Dog();
dog.addDogObserver((DogEvent event) -> {
System.out.println("Person: " + event.message);
});
dog.hey();
dog.hey();
}
}
class Alien {
public Alien() {
Dog dog = new Dog();
dog.addDogObserver((DogEvent event) -> {
System.out.println("Alien: " + event.message);
});
dog.hey();
}
}
public class Observer {
public static void main(String[] args) {
new Person();
new Alien();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment