zoukankan      html  css  js  c++  java
  • UML-设计模式-本地服务容错-适配器+工厂模式

    问题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

  • 相关阅读:
    [HNOI2004]L语言
    快速沃尔什变换FWT
    [BZOJ1486][HNOI2009]最小圈
    [BZOJ4819][SDOI2017]新生舞会
    [POJ2976]Dropping tests
    CTSC2018&APIO2018游记
    [Luogu3769][CH弱省胡策R2]TATT
    [BZOJ3489]A simple rmq problem
    [BZOJ4066]简单题
    [BZOJ2648]SJY摆棋子
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11602206.html
Copyright © 2011-2022 走看看