设计模式/行为型设计模式
简述
定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听。
当这个主题对象状态变化时,会通知所有观察者对象并作出相应处理逻辑
UML图
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public interface Food { boolean addAnimal(Animal animal);
boolean deleteAnimal(Animal animal);
void notifyAnimal(); }
public class CatFood implements Food { private List<Animal> animals = new ArrayList<>();
@Override public boolean addAnimal(Animal animal) { return animals.add(animal); }
@Override public boolean deleteAnimal(Animal animal) { return animals.remove(animal); }
@Override public void notifyAnimal() { animals.forEach(animal -> { if (animal instanceof Cat) { animal.run(); } }); } }
public class Client { public static void main(String[] args) { Food food = new CatFood(); Cat cat1 = new Cat(); Cat cat2 = new Cat(); Dog dog = new Dog(); food.addAnimal(cat1); food.addAnimal(cat2); food.addAnimal(dog); food.notifyAnimal(); food.deleteAnimal(cat1); food.notifyAnimal(); } }
|