案例分析:设计模式与代码的结构特性

案例分析:设计模式与代码的结构特性

观察者模式:

       观察者模式是软件设计模式中的一种,在此模式中,一个目标管理所有相依与它的观察者物件,并且在它本身的状态改变时主动发出通知。就像微博上的明星,当他发出一条动态时,作为他的粉丝,也就是观察者,就会接受到这一动态。所以这种模式通常被用来实现事件处理系统。

       观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式不仅被广泛应用于软件界面元素之间的交互,在业务对象之间的交互、权限管理等方面也有广泛的应用。

代码示例:

  

//抽象的被观察者
public class Subject {
    private List<Observer> registedObervers = new ArrayList<>();

    public void regist(Observer observer) {
        registedObervers.add(observer);
        Log.e("fff", "regist an observer");
    }

    public void untie(Observer observer) {
        registedObervers.remove(observer);
        Log.e("fff", "untie an observer");
    }

    public void callEveryOne(String newState) {
        for (Observer observer : registedObervers) {
            observer.update(newState);
        }
    }
}

 

//具体的被观察者
public class ConcreteSubject extends Subject {
    private String state;
    public String getState() {
        return state;
    }

    public void change(String newState) {
        state = newState;
        Log.e("fff", "concreteSubject state:" + newState);
        callEveryOne(newState);
    }
}
//抽象的观察者接口
public interface Observer {
    void update(String newState);
}
//一个具体的观察者
public class Observernews implements Observer {
    private String observerState;
    @Override
    public void update(String newState) {
        observerState = newState;
        Log.e("fff", "received " + newState + "我是坤坤,快来打篮球吧");
    }
}

 

 

上一篇:Linux 零拷贝技术


下一篇:ajax实现分页(响应html页面,sendFile;响应json数据)客户端渲染