Skip to content

观察者模式 #2

@bitfishxyz

Description

@bitfishxyz
package observer;

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

public class Subject {
    private List<Observer> observers = new ArrayList<>();

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

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

    protected void notifyObservers(){
        for (Observer observer : observers){
            observer.update(this);
        }
    }
}
package observer;

public interface Observer {
    void update(Subject subject);
}

package observer;

public class Weather extends Subject {
    private String weather;

    public String getWeather(){
        return this.weather;
    }
    public void setWeather(String weather){
        this.weather = weather;
        notifyObservers();
    }
}
 package observer;

public class People implements Observer {
    public String name;

    public People(String name) {
        this.name = name;
    }

    @Override
    public void update(Subject subject) {
        String weather = ((Weather)subject).getWeather();
        System.out.println("现在的天气是 " + weather + ",需要换衣服了");
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions