每个人都想过着富有的生活,这是很正常的。
这里以开店进货为例。
在讲之前解释英语单词:
Observer:查看;遵守
Observable:可见的,公开的。
从单词可以知道:商品用来卖,所以公开,继承【extends】了商品的基本属性[Observable].
对于商品,监管部门要对它实行【implements】监管,让其符合相关法律法规
package patterns.actions.observer;
import java.util.Observable;
/**
* 商品要放在柜台上卖,那么它就要接收各种部门检查
*这里设置:知识产权 和 物价部门
* @author one
*
*/
public class ProductObservable extends Observable {
public static String productName;
public static Float price;
public String getProductName() {
return productName;
}
/*
* 商品名称 有时需要更新
* */
public void setProductName(String productName) {
this.productName = productName;
//让知识产权管理部门看看
super.setChanged();
super.notifyObservers(this.productName);
}
public Float getPrice() {
return price;
}
/*
* 商品的价格也是要更新
* @param price
*/
public void setPrice(Float price) {
this.price = price;
//让物价局来看看
super.setChanged();
super.notifyObservers(this.price);
}
}
package patterns.actions.observer;
import java.util.Observable;
import java.util.Observer;
public class PriceObserver implements Observer {
//物价局
@Override
public void update(Observable o, Object arg) {
if(arg==ProductObservable.price){
ProductObservable myProduct =(ProductObservable) o;
System.out.println("PriceObserver price changed to "+myProduct.getPrice());
}
}
}
package patterns.actions.observer;
import java.util.Observable;
import java.util.Observer;
public class NameObserver implements Observer {
//知识产权部门只关心商标名称的改变
@Override
public void update(Observable o, Object arg) {
if(arg==ProductObservable.productName){
ProductObservable myProduct=(ProductObservable) o;
System.out.println("NameObserver name changed to "+myProduct.getProductName());
}
}
}
开店的基本过程设置好了,那么就开店吧。
package patterns.actions.observer;
/**
* 开店了
* @author one
*
*/
public class Test {
public static void main(String[] args) {
//商店来了一批商品
ProductObservable product=new ProductObservable();
//在上架之前,要经过部门审查,要有执照才能用。
product.addObserver(new NameObserver());
product.addObserver(new PriceObserver());
//好了,拿到商品销售执照,可以上架了。
product.setPrice(100.0f);
product.setProductName("Beer");
}
}
商品上架符合规则,所以监管部门都通过了,得出结果为:
PriceObserver price changed to 100.0
NameObserver name changed to Beer
好了,其实有时写程序,所谓的架构,也是来源于生活。