package com.designPattern.observer;
/**
* Created by ZhangJintao on 2020/3/22.
*/
public abstract class DataObserver {
public abstract void updata();
}
2、ConcreteObserver
package com.designPattern.observer;
/**
* Created by ZhangJintao on 2020/3/22.
*/
public class UserLoginInfoObserver extends DataObserver {
private UserLoginData userLoginData = null;
private String observerName = "";
public UserLoginInfoObserver(UserLoginData userLoginData, String observerName) {
this.userLoginData = userLoginData;
this.observerName = observerName;
}
@Override
public void updata() {
String userLoginInfo = userLoginData.getUserLoginInfo();
System.out.println("【" + observerName + "】接收到的用户登录信息为:【" + userLoginInfo + "】");
}
}
3、Subject
package com.designPattern.observer;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ZhangJintao on 2020/3/22.
*/
public abstract class Data {
private List<DataObserver> lists = new ArrayList<DataObserver>();
public void attach(DataObserver dataObserver){
lists.add(dataObserver);
}
public void dettach(DataObserver dataObserver){
lists.remove(dataObserver);
}
public void notifyData(){
for (DataObserver dataObserver : lists) {
dataObserver.updata();
}
}
}
4、ConcreteSubject
package com.designPattern.observer;
/**
* Created by ZhangJintao on 2020/3/22.
*/
public class UserLoginData extends Data {
private String userLoginInfo = "";
public String getUserLoginInfo() {
return userLoginInfo;
}
public void setUserLoginInfo(String userLoginInfo) {
this.userLoginInfo = userLoginInfo;
}
}
5、Main
package com.designPattern.observer;
/**
* Created by ZhangJintao on 2020/3/22.
*/
public class Main {
public static void main(String[] args) {
UserLoginData userLoginData = new UserLoginData();
userLoginData.setUserLoginInfo("我是小红,我于2020年03月23日登陆系统。登陆成功!");
userLoginData.attach(new UserLoginInfoObserver(userLoginData, "数据汇聚"));
userLoginData.attach(new UserLoginInfoObserver(userLoginData, "数据透传至第三方"));
userLoginData.notifyData();
}
}
一、UML图二、实例1、Observerpackage com.designPattern.observer;/** * Created by ZhangJintao on 2020/3/22. */public abstract class DataObserver { public abstract void updata();}2、Concrete...