JAVA设计模式之观察者模式

观察者模式定义了一种一对多的依赖关系.

简单的解释就是多个观察者对象,一同观察某个主题对象,并随着主题对象的更新,而各自进行相应的更新.

举个例子,动物园里饲养员是一个主题对象,而这个饲养员所喂养的动物,就是一个个的观察者对象.

在这个例子中的饲养员比较奇葩,他对它所喂养的动物,统一喂同一种食物,虽然动物不得不吃这些食物,但对这种食物都有着各自的看法.

首先我们知道,所有的饲养员,虽然性格不同,但是,他们必须都要有饲养员应该有的素质,这样才有资格成为一个饲养员.所以,我们首先要定义一个接口,来规范一下我们的饲养员.

public interface Siyangyuan {
    public void addAnimal(Animal a);
    public void deleteAnimal(Animal a);
    public void feedAnimal(String str);
}

动物园里有许多的动物,动物都是要吃饭的,而饲养员的首要任务,就是要让动物吃饱,喝好,健康快乐的成长。我们接收的动物,也是有一定的要求的,就是,都要会吃。吃完,还得要会说出改进意见。我们规范一下动物们。

public interface Animal {
    public void  eat(String o);
}

然后,这里有几个小动物。

这是猪

public class Pig implements Animal {
 
    public void eat(String o) {
        System.out.println("猪:什么我都喜欢吃,"+o+"我也不介意!可以再来两个!");
    }
 
}

这是绵羊

public class Sheep implements Animal {
 
    public void eat(String o) {
        System.out.println("羊:这个饲养员喂得东西太难吃了,再给我"+o+"我就要求换人!");
 
    }
 
}

这是老虎

public class Tiger implements Animal {
 
    public void eat(String o) {
        System.out.println("虎:整天喂我吃像"+o+"这样的没营养的东西,我要吃的是你!饲养员!");
 
    }
 
}

这几只动物还是很有性格的,每个人对于每天所吃的东西,所要表达的情感还是有很大的差距的。不过说归说,每次饲养员喂东西还都是乖乖的吃。毕竟,还是要活命的吗。

下边是我们根据上述的要求,聘请的一位饲养员,小李

public class Xiaoli implements Siyangyuan {
 
    private List<Animal> list = new ArrayList<Animal>();//用来记录饲养员管理的动物种类
 
    public void addAnimal(Animal a) {
        list.add(a);
 
    }
 
    public void deleteAnimal(Animal a) {
        list.remove(a);
 
    }
 
    public void feedAnimal(String str) {
        for (Animal a:list ){
            a.eat(str);
        }
 
    }
}

如你所见,我们的小李很能干,可以接受新动物,也可以送出不喜欢的动物,关键是,任劳任怨的给每个接收过来的动物喂食。

这样以后的事情,就简单了。

当然,还可以多招一个饲养员,每个饲养员喂养动物的食物不同,让各个动物根据自己的口味,自行选择想要跟随的饲养员。

另外再说一句,各大平台实时跟随气象台更新天气预报的例子,也是这种模式的体现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值