观察者模式:通过使用类之间的一对多的关系,当目标对象满足一定的条件的情况下,就可以通知观察者,让观察者做出相应的反应。
例子: (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();
}
}