TreeviewCopyright © qgao 2021-* all right reserved, powered by aleen42

观察者模式

Client

package com.bermuda.surface;

import com.bermuda.informer.Boss;
import com.bermuda.informer.Informer;
import com.bermuda.observer.Observer;
import com.bermuda.observer.StockObserver;

public class Client {

    public static void main(String[] args) {
        Informer boss = new Boss();

        Observer stockObserver1 = new StockObserver(boss,"stockObserver1");
        Observer stockObserver2 = new StockObserver(boss,"stockObserver2");

        boss.attach(stockObserver1);
        boss.attach(stockObserver2);

        boss.setInformerState("boss come in");
        boss.notice();
    }
}

Informer

package com.bermuda.informer;

import com.bermuda.observer.Observer;

public abstract class Informer {

    private String informerState;

    public String getInformerState() {
        return informerState;
    }

    public void setInformerState(String informerState) {
        this.informerState = informerState;
    }

    public abstract void attach(Observer observer);
    public abstract void detach(Observer observer);

    public abstract void notice();
}

Boss

package com.bermuda.informer;

import com.bermuda.observer.Observer;

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

public class Boss extends Informer {

    private List<Observer> observerList = new ArrayList<Observer>();

    public void attach(Observer observer) {
        observerList.add(observer);
    }

    public void detach(Observer observer) {
        observerList.remove(observer);
    }

    public void notice() {
        for (Observer observer:observerList) {
            observer.doAction();
        }
    }
}

Observer

package com.bermuda.observer;

import com.bermuda.informer.Informer;

public abstract class Observer {
    protected Informer informer;
    protected String observerName;

    public Observer(Informer informer, String observerName) {
        this.informer = informer;
        this.observerName = observerName;
    }

    public abstract void doAction();
}

StockObserver

package com.bermuda.observer;

import com.bermuda.informer.Informer;

public class StockObserver extends Observer {

    public StockObserver(Informer informer, String observerName) {
        super(informer, observerName);
    }

    public void doAction() {
        System.out.println(informer.getInformerState()+":"+observerName+"close the stock situation");
    }
}
Copyright © qgao 2021-* all right reserved,powered by Gitbook该文件修订时间: 2022-07-08 21:13:28

results matching ""

    No results matching ""