UML-设计模式-本地服务容错

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

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

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

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

参见如下设计:

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

2、获取pc

Store中,采用工厂模式,创建一个指定适配器,并传给Register

3、从pc中获取ps

1)、本地没有时,调LocalProducts

扫描二维码关注公众号,回复: 7383197 查看本文章

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

猜你喜欢

转载自www.cnblogs.com/yaoyuan2/p/11602206.html