设计原则:
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
观察者模式
观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知并自动更新。
一般采用观察者实现事件的监听,推送等等,常用的设计模式。
主题:
public class WeatherDate implements Subject{
private ArrayList observers;
private Info info;
public WeatherDate(){
observers=new ArrayList();
}
public void registerObserver(Observer o){
observers.add(o);
}
public void registerObserver(Observer o){……}
public void removeObserver(Observer o){……}
public void notifyObservers(Object arg){
for(Object o : observers){((Observer)o).update(this,arg);}//将自身传递给Observer,Observer调用get方法获得需要的信息
}
public void notifyObservers(){notifyObservers(null);}
public void dataChanged(){……}//主题状态改变,触发notifyObservers方法
}
观察者:
public class Disp implements Observer{
private Info info;
public Disp (Subject s){
s.registerObserver(this);
}
public void update(Subject s,Object arg){
this.info=s.getInfo();//主题改变时调用此方法,将主题自身传输给Observer,观察者通过get方法获得自己需要的状态,进行操作
}
}