为什么使用观察者模式:
观察者模式和MQ消息订阅机制很相似,都是当任务来到,然后所有的观察者收到消息开始执行,当然有时候没必要使用MQ的时候可以使用观察者模式:
优点:
降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。
目标与观察者之间建立了一套触发机制。
缺点:
观察者多的时候无法削峰填谷,突然很消耗资源,
开始上代码:
创建主题接口
public interface CommandSubject {
/**
* 注册观察者。
* @param ob 观察者接口。
*/
void registerObserver(final commandObserver ob);
/**
* 移除观察者。
* @param ob 观察者接口。
*/
void removeObserver(final commandObserver ob);
/**
* 广播通知
* @param message
*/
void fanout(final String message);
}
创建观察者接口
public interface CommandObserver {
/**
* 执行处理。
* @param message
*/
void handler(final String message);
}
实现主题接口
@Component("commandSubject")
public class CommandSubjectImpl implements CommandSubject