观察者游戏

例子: 猫鼠游戏

   场景:窗外 寒风凛冽

   1 女主人揉着他的女儿白猫花花在熟睡,不让宠物受冻

    2花花一边打呼噜一边警惕的周围,生怕老鼠在主人的脸上啃一口,猫观察老鼠

   3老鼠大白想吃主人脸上的黄瓜片,猫观察主人

    4 突然花花发现了大白和小白,他大吼一声,房间里发生了什么?

 

接口:  Subject 观察者    Observer 被观察者

类  : 猫,老鼠,女主人

 

定义观察者接口:

 

public interface Subject{

      aim(Observer obs);

   }

 

定义被观察者接口:

 

public interface Observer{

    void response();

     

}

 

定义女主人类:

 

public class Master{

    private Subject subject;

    public Master(Subject subject) {
        this.subject = subject;
        subject.aim( this);
    }
    public void response(){
        System.out.println("女主人惊醒。。。。。。。。");
    }

 

 

}

 

 

 

定义老鼠类:

 

public class Mouse implements Observer{
    private String name;
    private Subject subject;

    public Mouse(String name, Subject subject) {
        this.name = name;
        this.subject = subject;
        subject.aim(this);
    }
   

    public void response() {
        System.out.println(name+"撒丫子就跑!");
    }

}

 

定义猫类:

 

import java.util.ArrayList;

/**
 *
 * @author Administrator
 */
public class Cat implements Subject{
    private String name;
    private ArrayList<Observer> observers=new ArrayList<Observer>();

    public Cat(String name){
        this.name=name;
    }
    public void aim(Observer obs) {
        this.observers.add(obs);
    }
    public void cry(){
        System.out.print(name+"大吼一声:哪里跑!");
        for(Observer obs:observers){
            obs.response();
        }
    }

}

 

测试类:

 

package mousecat;

/**
 *
 * @author Administrator
 */
public class Test {
    public static void main(String[] args){
        Cat cat=new Cat("花花");
        Master master=new Master(cat);
        Mouse m1=new Mouse("大白", cat);
        Mouse m2=new Mouse("小白", cat);
        cat.cry();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值