UML-设计模式-本地服务容错-适配器+工厂模式

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

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

问题2:若是新加了存储ProductCatalog的服务(如另一家合做公司的服务),怎么办?spa

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

 

参见以下设计:设计

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

二、获取pcblog

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

 

三、从pc中获取ps产品

1)、本地没有时,调LocalProductsio

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

2)、LocalProducts中没有时,调DBProductsAdaptertable

 

 

 

3)、若是后来新增了外部服务BigWebServiceProductsAdapter时,当LocalProducts中没有时,也能够调用该新增的类BigWebServiceProductsAdapterclass

 

 

 最后,本例采用了:map

1)、适配器模式:支撑各种Adaptee:DB服务、外部合做商服务、Local服务
2)、工厂模式:建立使用哪一个Adaptee
相关文章
相关标签/搜索