当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

设计模式-快餐简解-【观察者模式】

    【观察者模式应用场景举例

    比如在玩“极品飞车”这款游戏,每一个车手到达终点的时候,都会在其它车手的屏幕上显示:某某人以多少时间到达终点的提示,其实这就是一个典型的观察者模式的应用,观察者模式即是典型的双向一对多的应用场景下用一的一端来通知多的一端。

    【观察者模式解释

    类型:行为模式

    定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象的状态发生改变时,会通知所有的观察者对象,使它们能够自己更新自己。

    【观察者模式UML图

    【观察者模式-JAVA代码实现

    新建抽象发布通知父类:

package  carer_subject;

import  java.util.ArrayList;
import  java.util.List;

import  carer_observer.carer_observer;

public   interface  carer_subject_parent {

    
public   void  set_state(String state_string);

    
public  String get_state();

    
public   void  add_observer(carer_observer carer_observer_ref);

    
public   void  sub_observer(carer_observer carer_observer_ref);

    
public   void  notityAllCarer();

}

    新建发布通知实现类:

package  carer_subject;

import  java.util.ArrayList;
import  java.util.List;

import  carer_observer.carer_observer;

public   class  carer_subject_sub  implements  carer_subject_parent {

    List
< carer_observer >  list_observer  =   new  ArrayList < carer_observer > ();

    
private  String state;

    
public   void  set_state(String state_string) {
        
this .state  =  state_string;
    }

    
public  String get_state() {
        
return  state;
    }

    
public   void  add_observer(carer_observer carer_observer_ref) {
        list_observer.add(carer_observer_ref);
    }

    
public   void  sub_observer(carer_observer carer_observer_ref) {
        list_observer.remove(carer_observer_ref);

    }

    
public   void  notityAllCarer() {
        state 
=   " 到达终点 " ;
        
for  ( int  i  =   0 ; i  <  list_observer.size(); i ++ ) {
            list_observer.get(i).show_info();
        }

    }

}

    新建观察者接口:

package  carer_observer;

import  carer_subject.carer_subject_parent;

public   interface  carer_observer {

    
public   void  show_info();

}

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接