①UML设计
②定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。
③示例:
/**
* 定义一个主题(被观察者)
*/
public interface Subject{
void register(Observer observer);
void remove(Observer observer);
void notify(Observer observer);
}
/**
* 定义一个观察者
*/
public interface Observer{
void update(String msg);
}
/**
* 定义具体的主题实现类
*/
public class NewsServer implements Subject{
List<Observer> observers;
String message;
public NewsServer(){
observers = Lists.newArrayList();
}
@Override
public void register(Observer o){
obserbers.add(o);
}
@Override
public void remove(Observer o){
if(!observers.isEmpty()) {
observers.remove(o);
}
}
@Override
public void notify(){
observers.forEach(
o-> {o.update(message);}
);
public void setMessage(String s){
this.message = s;
System.out.println("微信服务更新:" + mesage);
//消息更新完通知所有的观察者
this.nofity();
}
}
}
/**
* 定义具体的观察者
*/
public class User implements Observer{
String name;
String message;
public User(String name){this.name = name;}
@Override
public void update(String message){
this.message = message;
this.receive();
}
private void receive{
System.out.out(name + "收到消息" + message);
}
}
public class Test{
public static void main(String args){
//定义服务号
NewsSerber ns = new NewsServer();
//定义用户
Observer user1 = new User("Ryan");
Observer user2 = new User("Kiven");
//注册
ns.register(user1);
ns.register(user2);
//更新消息,会自动通知已经注册的用户
ns.setMessage("Java is the best language in the world");
}
}