每个人都想过着富有的生活,这是很正常的。

这里以开店进货为例。

在讲之前解释英语单词:

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 {//物价局@Overridepublic 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 {//知识产权部门只关心商标名称的改变@Overridepublic 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

好了,其实有时写程序,所谓的架构,也是来源于生活。

Observer设计模式【利用商品概念解释】相关推荐

  1. EBS模块介绍和概念解释

    Oracle模块介绍和概念解释 Oracle重要模块简介 账套 会议科目表 记账本位币 会议日历的财务报告实体 组织 业务组 公司的最高部门 法人实体 提交财务和税务报表的法人公司 经营单位 orac ...

  2. 农场js_通过销售农场商品来解释Web API

    农场js by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 通过销售农场商品来解释Web API (Web APIs explained by selling g ...

  3. 设计模式超简单的解释!

    设计模式超简单的解释!(本项目从 design-patterns-for-humans fork) 介绍 设计模式是反复出现问题的解决方案; 如何解决某些问题的指导方针.它们不是可以插入应用程序并等待 ...

  4. 设计模式超级简单的解释

    推荐阅读 design-patterns-for-humans 中文版(github 仓库永久更新) MongoDB 资源.库.工具.应用程序精选列表中文版 有哪些鲜为人知,但是很有意思的网站? 一份 ...

  5. faster-rcnn原理及相应概念解释

    R-CNN --> FAST-RCNN --> FASTER-RCNN R-CNN: (1)输入测试图像: (2)利用selective search 算法在图像中从上到下提取2000个左 ...

  6. (转)使用CGLIB实现AOP功能与AOP概念解释

    http://blog.csdn.net/yerenyuan_pku/article/details/52864395 使用CGLIB实现AOP功能 在Java里面,我们要产生某个对象的代理对象,这个 ...

  7. 【转】faster-rcnn原理及相应概念解释

    R-CNN --> FAST-RCNN --> FASTER-RCNN R-CNN: (1)输入测试图像: (2)利用selective search 算法在图像中从上到下提取2000个左 ...

  8. php中的pecl是什么,什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释

    什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释 概述 关于PEAR,PECL这两个东西,初学PHP的时候就知道,但是貌似用的人很少再加上以前也是在Windows下做开发,所以了解的不多 ...

  9. GNSS术语:词汇与概念解释

    历书(Almanac) 由GNSS卫星传送的资料,包括所有卫星的轨道信息.时钟修正以及大气时延参数.这些资料用于支持快速卫星捕获.历书中的轨道信息不如星历表精确,但有效时间较长(一至两年). 模糊值 ...

最新文章

  1. 1024 | 不加班,带你们一起薅当当的羊毛!
  2. matlab画CDF曲线
  3. ubuntu 12.04 添加 IP并配置DNS
  4. python程序设计报告-20183122 实验一《Python程序设计》实验报告
  5. 科大星云诗社动态20210824
  6. 0/1背包问题-----回溯法求解
  7. jsp Request获取url信息的各种方法比较
  8. ThinkSNS 仿蘑菇街 社区购物分享系统
  9. 进程相关概念、C程序的空间分配
  10. power iso linux启动盘,Power ISO Maker/ISO燃烧到磁盘工具 V3.0版
  11. 勒索软件的激荡三十年
  12. 最佳实践 | 联通数科基于 DolphinScheduler 的二次开发
  13. 用 js判断 一个数是否是素数(质数)_js 基础算法题(二)
  14. 订单可视化(智能制造、流程再造、企业信息化) 第四篇 技术方案的制定
  15. 阿里免费网盘teambition使用初体验
  16. Spring Boot搭建Web服务器,实现用户注册登录功能
  17. mysql自旋锁_mysql 自旋锁
  18. Android之CardView
  19. 【Some】【心学】心学精华,人生要旨
  20. 小说文学行业之“盛大文学”

热门文章

  1. PHP - .htaccess设置显示PHP错误 (转)
  2. SQLAdvisor美团SQL索引优化建议工具
  3. 自定义状态栏notification布局
  4. 浏览器允许的并发请求资源数是有限制的-分析
  5. 1-6-RHEL7用户管理和如何恢复root密码
  6. Win32和MFC项目如何输出调试信息到VS的调试窗口
  7. Magento入门基础 - 后台如何批量导入产品及产品图片
  8. CentOS7.3下Jenkins+docker自动化部署solo站点
  9. 《深入浅出Mysql》學習筆記--日志
  10. Docker 镜像小结---操作指令介绍(七)