[一天一个设计模式]-[观察者模式]
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
观察者模式包含如下角色:
- Subject: 目标
- ConcreteSubject: 具体目标
- Observer: 观察者
- ConcreteObserver: 具体观察者
举个栗子,打篮球,开球时所有球员都观察裁判抛篮球
abstract class Ball{
List<Player> players = new ArrayList<>();
public void setPlayer(Player player){
player.add(player);
}
//通知观察者方法
public abstract void notifyPlayer();
}
class BasketBall extend Ball{
@Override
public void notifyPlayer(){
players.stream().foreach(player->{
player.active();
})
}
}
interface Player{
void active();
}
class PlayerA implements Player{
@Override
public void active(){
sout("I'm A");
}
}
class PlayerB implements Player{
@Override
public void active(){
sout("I'm B");
}
}
main(){
Ball ball=new BasketBall()
Player a = new PlayerA();
Player b = new PlayerB();
ball.setPlayer(a);
ball.setPlayer(b);
ball.notifyPlayer();
}