观察者模式:
这里以消息订阅为例:
用户模型
public class User {
private String id;
private String name;
private String gender;
public User(String id){
this.id = id;
}
public User(String id, String name, String gender){
this.id = id;
this.name = name;
this.gender = gender;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public boolean equals(Object object){
if(object == null) return false;
if(this == object) return true;
if(object instanceof User){
if(this.id.equals(((User) object).getGender()))
return true;
}
return false;
}
@Override
public int hashCode(){
return this.id.hashCode();
}
//最好抽离为
public void notifyUpdates(String msg){
System.out.println("User ID:"+id+" updates:"+msg);
}
}
观察模型
public class RegisterServiceImpl implements RegisterService{
private List<User> users = new ArrayList<>();
private String message;
@Override
public void registerMessage(User user) {
// TODO Auto-generated method stub
users.add(user);
}
@Override
public void cancelMessage(User user) {
// TODO Auto-generated method stub
if(users!=null&&!users.isEmpty()){
users.remove(user);
}
user.notifyUpdates("Have calceled");
}
@Override
public void notifyUpdates() {
// TODO Auto-generated method stub
for(User user:users){
user.notifyUpdates(this.message);
}
}
public void setMessage(String message) {
this.message = message;
notifyUpdates();
}
}
625

被折叠的 条评论
为什么被折叠?



