问题1:我们的ProductCatalog存储在了数据库里了,但是数据库瘫掉了,怎么办?

解决:本地(Map)---->Local(文件)---->DB

问题2:如果新加了存储ProductCatalog的服务(如另外一家合作公司的服务),怎么办?

解决:采用适配器模式。(注:Local和DB本例中也采用了适配器模式)

参见如下设计:

1、核心-对于产品信息(ProductCatalog)的适配器

2、获取pc

Store中,采用工厂模式,创建一个指定适配器,并传给Register
一定注意:在1.1.2中,已经指明了到底使用哪个Adaptee(DBProductsAdapter/BigWebServiceProductsAdapter/Local),Local是个特例,因为,在其内部不仅实现了自己的服务,而且当本Local中不存在时还调用指定Adaptee

3、从pc中获取ps

1)、本地没有时,调LocalProducts

1.1、本地map中不存在时,执行1.2
1.2、进入LocalProducts处理,并返回ps
1.3、存入本地map:put(id,ps)

2)、LocalProducts中没有时,调DBProductsAdapter

3)、如果后来新增了外部服务BigWebServiceProductsAdapter时,当LocalProducts中没有时,也可以调用该新增的类BigWebServiceProductsAdapter

最后,本例采用了:

1)、适配器模式:支撑各类Adaptee:DB服务、外部合作商服务、Local服务
2)、工厂模式:创建使用哪个Adaptee

最新文章

  1. 顺序表C语言版
  2. Atcoder CODE FESTIVAL 2016 qual C 的E题 Encyclopedia of Permutations
  3. loadrunner---<二>---菜鸟对cookie的思考
  4. [python]倒计时实现
  5. poj 2724 二分图最大匹配
  6. 关于类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内问题的解决方案
  7. Spring事务配置的五种方式(转发)
  8. Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护
  9. git开源项目协作
  10. flex布局的使用,纪念第一次开发手机网站
  11. node+vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发(1):创建项目,完成登录功能
  12. 3d轮播图——类似酷狗的轮播
  13. python import 包的路径以及相对路径加载的问题
  14. Python爬虫学习——布隆过滤器
  15. zabbix使用percona插件监控mysql
  16. R基础学习(三)-- 简单练习(shiny+mysql+barplot)
  17. HDFS问题集(一),使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space
  18. python 三种遍历列表里面序号和值的方法
  19. C# 4.0 不要跨程序集用dynamic指向匿名类型 (转载)
  20. WebAPI如何返回json

热门文章

  1. 初学者的困惑:OOP与一般编程的区别
  2. duilib+cef自定义浏览器控件编译错误
  3. Struts+Hibernate+Spring面试题合集及答案(转)
  4. Spring Boot2(006):关于配置类(Configuration Classes)和配置(Configuration)
  5. 090-PHP数组过滤函数array_filter
  6. 腾讯云服务器上搭建 2.176.3-1.1 版本的Jenkins,jdk 11
  7. python中的__code__
  8. 【转载】webDriver拾级而上·之五 iframe的处理
  9. Glusterfs volume 的三种挂载方式
  10. java 学生信息管理