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");
}
}
问题起源:
我们在网上买东西,没钱买的时候经常先加到购物车当中。购物车中的商品如果打折,会及时的通知用户。对于设计者来说,我们自然会提问几个问题。(我们可以想象到商品上面安装了某个监听器,会及时的通知我们)
问题:
商品:
是那件商品折扣通知给用户?通知那些用户?将商品加到购物车当中的用户(把谁通知给谁)
通知用户那些内容呢?
用户:
用户收到的是那件商品的折扣呢?(用户购物车当中有很多商品)
上面提的几个问题,是自然而然提出的。那如何解决呢?
首先分析:
是那件商品这头通知给用户?是改变价格的商品。
通知那些用户?将商品添加到购物车当中的用户。
通知用户那些内容?商品名称和几个折扣
代码:
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");
}
}
相关文章推荐
- Java设计模式之Observer(观察者)模式
- Java Q&A: 使用Observer模式
- 思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式
- Java设计模式之Observer模式
- 真正的创新必然是基于对市场的了解,对客户反馈的观察,开发出来的产品一定要适应市场,提出的模式一定要能解决现实的问题。而在这其中,技术只是一种实现手段。
- observer设计模式的java实现
- java实现观察者(Observer)模式
- 设计模式:Observer(从java源代码看)
- 设计模式:Observer(观察器)
- java Observer 观察者模式
- Java设计模式之Observer 观察者模式
- Java中的观察者模式(Observer)
- Java中的观察者模式(Observer)
- observer设计模式的java实现
- Java内置Observer的模式学习
- Observer(观察器)模式
- [特别公告]ZERO推广助手,自即日起价格变动通知。
- Java Q&A: 使用Observer模式
- java中实现observer模式
- Java设计模式之Observer