Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- /**
- *
- * @author LeFex
- */
- public class Test {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- IObservable observable = new ConcreteObservable();
- IObserver observer = new ConcreteObserver(observable);
- observable.register(observer);
- ConcreteObserverAndObservable middle = new ConcreteObserverAndObservable(observable);
- observable.register(middle);
- IObserver secondHandObserver = new ConcreteObserver(middle);
- middle.register(secondHandObserver);
- observable.doStuff("HELLO");
- observable.updateObservers();
- }
- }
- interface IObserver{
- public void update();
- }
- interface IObservable{
- public void updateObservers();
- public void register(IObserver obs);
- public void unRegister(IObserver obs);
- public String getData();
- public void doStuff(String stuff);
- }
- class ConcreteObservable implements IObservable{
- private ArrayList<IObserver> mObservers = new ArrayList<>();
- private String mData = "";
- @Override
- public void updateObservers() {
- for(IObserver o : mObservers){
- o.update();
- }
- }
- @Override
- public void register(IObserver obs) {
- mObservers.add(obs);
- }
- @Override
- public void unRegister(IObserver obs) {
- mObservers.remove(obs);
- }
- @Override
- public String getData() {
- return mData;
- }
- @Override
- public void doStuff(String stuff) {
- mData = stuff;
- }
- }
- class ConcreteObserver implements IObserver{
- private IObservable mSubject;
- public ConcreteObserver(IObservable subject){
- mSubject = subject;
- }
- @Override
- public void update() {
- String data = mSubject.getData();
- System.out.println(data);
- }
- }
- class ConcreteObserverAndObservable implements IObservable, IObserver{
- private ArrayList<IObserver> mObservers = new ArrayList<>();
- private String mData = "";
- private IObservable mSubject;
- public ConcreteObserverAndObservable(IObservable subject){
- mSubject = subject;
- }
- @Override
- public void updateObservers() {
- for(IObserver o : mObservers){
- o.update();
- }
- }
- @Override
- public void register(IObserver obs) {
- mObservers.add(obs);
- }
- @Override
- public void unRegister(IObserver obs) {
- mObservers.remove(obs);
- }
- @Override
- public String getData() {
- return mData;
- }
- @Override
- public void update() {
- String temp = mSubject.getData();
- mData = temp + " " + temp;
- updateObservers();
- }
- @Override
- public void doStuff(String stuff) {
- mData = stuff;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement