java观察着observer模式---商品价格变动通知客户

通过一个熟悉的流程,来体验一下什么是observe模式。

问题起源:

我们在网上买东西,没钱买的时候经常先加到购物车当中。购物车中的商品如果打折,会及时的通知用户。对于设计者来说,我们自然会提问几个问题。(我们可以想象到商品上面安装了某个监听器,会及时的通知我们)

问题:

商品:

是那件商品折扣通知给用户?通知那些用户?将商品加到购物车当中的用户(把谁通知给谁)

通知用户那些内容呢

用户:

用户收到的是那件商品的折扣呢?(用户购物车当中有很多商品)

 

上面提的几个问题,是自然而然提出的。那如何解决呢?

 

首先分析:

是那件商品这头通知给用户?是改变价格的商品。

通知那些用户?将商品添加到购物车当中的用户。

通知用户那些内容?商品名称和几个折扣

 

代码:

import java.util.ArrayList;

 

/*

 * 有很多商品。

 * 谁在监听着商品:(商品价格变化通知那个用户)(用户得注册监听商品)。

 * 通知信息:通知那些信息,给谁。(给监听该商品的用户)

 * 商品有很多,所以用接口。

 */

interface products{

public void registerObserve(customer ob);

public void removeObserve(customer ob);

public void noticefyAllObservers();

}

/*

 * 接收监听来的商品信息。

 * 用户有很多,所以用接口。

 */

interface customers{

public void update(products messages);

}

 

class product implements products{

private  ArrayList cus;

private  ArrayList price;

private  ArrayList productName;

public product(){

cus = new ArrayList();

price = new ArrayList();

productName = new ArrayList();

}

public void registerObserve(customer ob) {

this.cus.add(ob);

}

 

public void removeObserve(customer ob) {

}

 

public void noticefyAllObservers() {

for(customer custo : cus){

custo.update(this);

}

}

public void set(String name,String price){

this.price.add(price);

this.productName.add(name);

this.noticefyAllObservers();

}

public String toString(){

return productName.toString()+price.toString();

}

}

 

class customer implements customers{

private String name;

public customer(String name){

this.name = name;

}

public void update(products messages) {

System.out.println(this.name + ":商品价格变化");

System.out.println(messages);

}

}

 

public class chenge{

public static void main(String[] args){

customer cus = new customer("贾少坤");

product pro = new product();

pro.registerObserve(cus);

pro.set("羽绒服","120");

}

}

你可能感兴趣的:(设计模式)