代码实现
Subject
package com.soft863.designpattern.observerpattern;
public interface Subject {
void add(Observer observer);
void delete(Observer observer);
void notifyObservers(String content);
void oper(String para);
}
AbstractSubject
package com.soft863.designpattern.observerpattern;
import java.util.Vector;
public abstract class AbstractSubject implements Subject {
private Vector<Observer> vector = new Vector<>();
@Override
public void add(Observer observer) {
vector.add(observer);
}
@Override
public void delete(Observer observer) {
vector.remove(observer);
}
@Override
public void notifyObservers(String content) {
for (Observer o : vector) {
o.update(content);
}
}
}
MySubject
package com.soft863.designpattern.observerpattern;
public class MySubject extends AbstractSubject {
@Override
public void oper(String para) {
System.out.println("开始进行操作");
notifyObservers(para);
}
}
Observer
package com.soft863.designpattern.observerpattern;
public interface Observer {
public void update(String content);
}
Observer1
package com.soft863.designpattern.observerpattern;
public class Observer1 implements Observer {
@Override
public void update(String content) {
System.out.println("Observer1接收内容"+content);
}
}
Observer2
package com.soft863.designpattern.observerpattern;
public class Observer2 implements Observer {
@Override
public void update(String content) {
System.out.println("Observer2接收内容"+content);
}
}
Start
package com.soft863.designpattern.observerpattern;
public class Start {
public static void main(String[] args) {
Subject subject = new MySubject();
subject.add(new Observer1());
subject.add(new Observer2());
String para ="下午2点上课";
subject.oper(para);
}
}
运行结果