设计模式之---观察者模式

观察者模式:通过使用类之间的一对多的关系,当目标对象满足一定的条件的情况下,就可以通知观察者,让观察者做出相应的反应。

例子: (1)通用的观察者的模板(2) 测速器是目标对象,警车是观察者。



代码如下:

package observer;


public interface Observer {


public void update();
}

package ObserverInstance;


public class PoliceObserver implements Observer{


public void update() {
System.out.println("I am a police to catch the car that runs fast");
}
}

package ObserverInstance;


public abstract class Target {


private Observer observer;


public Observer getObserver() {
return observer;
}


public void setObserver(Observer observer) {
this.observer = observer;
}

public abstract void dowork();
public void notifyObserver(){
observer.update();
}
}

package ObserverInstance;


public class Speed extends Target 
{
private int speed;



public int getSpeed() {
return speed;
}




public void setSpeed(int speed) {
this.speed = speed;
}




public void dowork() {
if(speed<10){
System.out.println("the car can run");
}else{
this.notifyObserver();
}
}

}


package ObserverInstance;


public class Car {


private int speed;
private String color;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Car(int speed, String color) {
this.speed = speed;
this.color = color;
}


}

package ObserverInstance;


public class Client {


public static void main(String[] args){
Car car=new Car(9,"red");
Observer observer=new PoliceObserver();
Speed speed=new Speed();
speed.setObserver(observer);
speed.setSpeed(car.getSpeed());
speed.dowork();
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值