凯发的pt老虎机玩不了 当前位置:首页>凯发的pt老虎机玩不了>正文

凯发的pt老虎机玩不了

发布时间:2018-10-24

原标题:Java设计模式之观察者模式

天将之首,这可是以后攻入自己那个世界的先锋大将啊,去他那里找到回去的路,无疑于虎口拔牙。但是就算是虎口拔牙,叶扬也必须要去做了。

威尼斯人官网平台娱乐

众海盗面面相觑,一时间确实没有任何办法,只能照唐三的话去做。老海盗道:“我们会按照你说的做。但也请你遵守诺言,不要伤害我们团长。”
“接下来你打算去哪里?不会就是单纯的来这里告诉照美冥这个情报吧。“千手纲手可不想那么快回去啊,再来的路上可是走水路的,因此沿途的路上可是没有赌场,让在雪之国很久没有去过赌场的纲手觉得想去赌上两手。

刚要落座,透过前方的落地玻璃窗,沈夏薇遥遥地瞅见了丁宁出没在楼下的身影。

代码结构:

 

 

概念:

观察者模式要同时存在观察者和被观察者双方,观察者可以是多个。在Java中,需要去继承java.util.Observable类,先看被观察者(一个产品列表),如下代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
 * 被观察的产品列表
 * @author Administrator
 *
 */
public class ProductList extends Observable {
    private List<String> producList = null;// 产品列表
    private static ProductList instance;// 类的唯一实例

    private ProductList() {// 私有构造器

    }

    /**
     * 获取唯一实例
     * 
     * @return 产品列表唯一实例
     */
    public static ProductList getInstance() {
        if (instance == null) {
            instance = new ProductList();
            instance.producList = new ArrayList<String>();
        }
        return instance;
    }

    /**
     * 增加观察者(电商接口)
     * 
     * @param observer观察者
     */
    public void addProductListObserver(Observer observer) {
        this.addObserver(observer);
    }

    /**
     * 新增产品
     * 
     * @param newProduct新产品
     */
    public void addProduct(String newProduct) {
        producList.add(newProduct);
        System.out.println("产品列表新增了产品:" + newProduct);
        this.setChanged();// 设置被观察对象发生变化
        this.notifyObservers(newProduct);// 通知观察者,并传递新产品
    }
}

上面这个类的一些基本内容和主要方法如下:

1、构造方法私有化,避免通过new的方式创建对象,而是通过getInstance方法获取产品列表清单,这里使用的是单例模式。

2、addProducListObserver可以增加一个电商接口(观察者)。

3、核心逻辑在addProduct方法上。在产品列表上增加了一个新的产品,然后调用setChanged方法。这个方法用于告知观察者当前被观察者发生了变化,如果没有,则无法触发其行为。最后通过notifyObservers告知观察者,让他们发生相应的动作,并将新产品作为参数传递给观察者。

这时已经有了被观察者对象,还要去编写观察者。以淘宝和京东威力,去实现他们的电商接口。作为观察者需要实现java.util.Observer接口的update方法,如下所示:

import java.util.Observable;
import java.util.Observer;
/**
 * 京东电商接口
 * @author Administrator
 *
 */
public class JingDongObserver implements Observer{

    @Override
    public void update(Observable o, Object product) {
        String newProduct = (String) product;
        System.out.println("发送新产品["+newProduct+"]同步到京东商城");
    }

}
import java.util.Observable;
import java.util.Observer;
/**
 * 淘宝电商接口
 * @author Administrator
 *
 */
public class TaoBaoObserver implements Observer{
    
    @Override
    public void update(Observable o, Object product) {
        String newProduct = (String) product;
        System.out.println("发送新产品["+newProduct+"]同步到淘宝商城");
    }

}

创建测试类这两个观察者和产品列表的被观察者,代码如下:

public class Test {
    public static void main(String[] args) {
        ProductList observable = ProductList.getInstance();
        TaoBaoObserver taoBaoObserver = new TaoBaoObserver();
        JingDongObserver jingDongObserver = new JingDongObserver();
        observable.addObserver(taoBaoObserver);
        observable.addObserver(jingDongObserver);
        observable.addProduct("新增产品1");
    }
}

增加横线的代码是对被观察者注册观察者,这样才能让观察者监控到被观察者的变化情况,运行上面代码得到如下结果:

产品列表新增了产品:新增产品1
发送新产品[新增产品1]同步到京东商城
发送新产品[新增产品1]同步到淘宝商城

结论:以后在产品列表发布新产品,观察者们都可以触发对应的行为了,就不会出现if语句的各类问题,更利于扩展和维护。

编辑:乙徒

发布时间:2018-10-24 05:20:59

当前文章:http://radiokey.biz/content/2018-10-12/22947.html

博天堂官网真人娱乐 八大胜娱乐 小白菜老虎机 老虎机开户送彩金CFO刘千里 老虎机遥控作弊 老虎机游戏机 捕鱼机 ag真人娱乐平台网址 腾博会pt手机版下载

74596 88115 86014 86591 67423 8952637853 75286 89987

责任编辑:文开戏海