观察者(Observer)模式
当某被观察对象发生变化时候,观察它的对象都能及时做出相应的反应
应用场景:
定义一对多的依赖关系,当其中的一发生变化的时候,其中的多能够及时做出相应的反应
场景A:如上一篇讲的,客户端的多个事件都关注着网络连接状态,当网络连接状态OK的时候,多个事件都能够及时继续执行
场景B:生产者与消费者情景 。多个消费者都要竞争一个产品。但是目前产品缺货,当产品补充的时候,消费者们能够及时的去竞价购买
实现 : 观察者模式 ,就是在被观察对象中,保留有观察者的队列 。当被观察对象发生改变的时候 ,就遍历观察者队列 ,执行观察者的方法
应用方式: 针对场景A
方式1、不利用JDK自带Observable类,自行构建观察者和被观察对象
网络连接监听类:
package designers.observer;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
/**
* 方式一 网络连接
* @author xubo
*
*/
public class NetCheck extends Thread {
static private Logger logger = Logger.getLogger(NetCheck.class);
private static NetCheck instance;
long sleepTimes = 10 * 1000