设计模式/行为型设计模式
简述
定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听。
当这个主题对象状态变化时,会通知所有观察者对象并作出相应处理逻辑
UML图
 
代码
| 12
 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();
 }
 }
 
 |