天天看點

設計模式之管理狀态_Observer觀察者模式_發送狀态變化通知

前言

​​部落客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)      

繼續閱讀