每个人都想过着富有的生活,这是很正常的。
这里以开店进货为例。
在讲之前解释英语单词:
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
好了,其实有时写程序,所谓的架构,也是来源于生活。