一、抽象观察者接口
package com.example.study.observer;
public interface IObserver {
void update(String msg);
}
二、抽象被观察者接口
package com.example.study.observer;
public interface ISubject {
void register(IObserver observer);
void unregister(IObserver observer);
void notifyObsvrs();
}
三、实例化被观察者接口
package com.example.study.observer;
import java.util.ArrayList;
import java.util.List;
public class Teacher implements ISubject {
List<IObserver> observers;
String msg;
public Teacher() {
observers = new ArrayList<>();
}
@Override
public void register(IObserver observer) {
if (!observers.contains(observer)) {
observers.add(observer);
}
}
@Override
public void unregister(IObserver observer) {
if (observers.contains(observer)) {
observers.remove(observer);
}
}
@Override
public void notifyObsvrs() {
observers.forEach(observer -> observer.update(msg));
}
public void setInfo(String msg) {
this.msg = msg;
notifyObsvrs();
}
}
四、实例化观察者接口
package com.example.study.observer;
public class Hanmeimei implements IObserver {
@Override
public void update(String msg) {
System.out.println("hanmeimei get ---> " + msg);
}
}
package com.example.study.observer;
public class Jack implements IObserver {
@Override
public void update(String msg) {
System.out.println("jack get ---> " + msg);
}
}
五、测试调用
package com.example.study;
import com.example.study.observer.Hanmeimei;
import com.example.study.observer.Jack;
import com.example.study.observer.Teacher;
import com.example.study.strategy.ColorContext;
import com.example.study.strategy.IColor;
public class MyClass {
public static void main(String[] args) {
Teacher teacher = new Teacher();
Hanmeimei hanmeimei = new Hanmeimei();
Jack jack = new Jack();
teacher.register(hanmeimei);
teacher.register(jack);
teacher.setInfo("放学了,快点滚!!!");
}
}