观察者模式属于行为型模式,所谓观察模式,观察者订阅了某种服务,那么该服务有变化会通知观察者。
简单的类图:
public interface EventObserver {
public void speek();
}
public interface EventSubject {
public void registerOberver(EventObserver observer);
public void removeOberver(EventObserver observer);
public void notifiedOberver();
}
public class observer1 implements EventObserver{
@Override
public void speek() {
System.out.println("observer1");
}
}
public class observer2 implements EventObserver{
@Override
public void speek() {
System.out.println("observer2");
}
}
public class observer3 implements EventObserver{
@Override
public void speek() {
System.out.println("observer3");
}
}
public class Subject implements EventSubject{
private List<EventObserver> list = new ArrayList<>();
private static Subject subject = null;
private Subject(){
}
public static Subject newInstance(){
if(subject ==null){
subject = new Subject();
}
return subject;
}
@Override
public void registerOberver(EventObserver observer) {
list.add(observer);
}
@Override
public void removeOberver(EventObserver observer) {
list.remove(observer);
}
@Override
public void notifiedOberver() {
for(EventObserver c:list){
c.speek();
}
}
}
public class test {
public static void main(String[] args){
observer1 o1 = new observer1();
observer2 o2 = new observer2();
observer3 o3 = new observer3();
Subject subject = Subject.newInstance();
subject.registerOberver(o1);
subject.registerOberver(o2);
subject.registerOberver(o3);
subject.notifiedOberver();
System.out.println("======================");
subject.removeOberver(o1);
subject.notifiedOberver();
}
}

本文介绍了观察者模式的基本概念及其在软件开发中的应用。通过具体的Java实现案例,展示了如何定义观察者接口、被观察者接口,并实现了三种不同类型的观察者。此外,还提供了测试类来演示观察者注册、移除及通知的全过程。
620

被折叠的 条评论
为什么被折叠?



