前言
部落客github
部落客個人部落格http://blog.healerjean.com
1、解釋
Observer 是進行觀察的人,也就是觀察者的意思,當觀察對象狀态發生變化的時候回通知給觀察者,觀察者模式适用于根據對象狀态進行相應處理的場景
這個模式具體看 SpringBoot_ApplicationEvent實作異步調用
1、執行個體代碼
1.1、觀察者抽象類父類
public abstract class AbstractObserver {
/**
* 被觀察的對象
*/
public User user ;
public abstract void listent() ;
}
1.2、觀察者類
public class Observer extends AbstractObserver {
public void register(User user){
this.user = user;
//重點
user.setObserver(this);
}
@Override
public void listent( ) {
System.out.println( "監聽到的資料是:"+user.toString() );
}
}
1.3、被監聽的類
@Data
public class User {
private String name ;
private String password ;
/**
* 觀察者
*/
private AbstractObserver observer;
public void register(String name,String password){
System.out.println("注冊的使用者的姓名為:"+name+"\n密碼為:"+password);
observer.listent();
}
/**
* 重點
* @param observer
*/
public void setObserver(AbstractObserver observer){
this.observer = observer;
}
}
1.4、測試
public class Main {
public static void main(String[] args) {
User user = new User();
new Observer().register(user);
user.login("healerjean","password");
}
}
正在登陸的使用者為:healerjean密碼為:password
監聽到的資料是:User(name=null, password=null, observer=com.hlj.moudle.design.D08管理狀态.D17Observer觀察者模式.Observer@4dd8dc3)