您的位置:首页 > 编程语言 > Java开发

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

2016-09-10 22:47 302 查看
通过一个熟悉的流程,来体验一下什么是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<customer>
cus;
private  ArrayList<String>
price;
private  ArrayList<String>
productName;

public product(){
cus =
new ArrayList<customer>();
price =
new ArrayList<String>();
productName =
new ArrayList<String>();
}

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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息