zoukankan      html  css  js  c++  java
  • UML-GRASP后4种模式

    1、多态

    1)、什么是多态

    问题:if-else耦合度过高
    解决:
        方法1:接口
        方法2:超类里需多态的方法前加上{abstract}

    2)、相关模式

    防止异变
    大量GoF,如适配器(Adapter)、命令(Commond)、组合(Composite)、代理(Proxy)、状态(State)、策略(Strategy)模式

    2、纯虚构

    1)、什么是纯虚构?

    举个例子:在数据库中保存Sale对象。根据信息专家模式可将保存Sale对象的职责分配给Sale自身,这将导致Sale中耦合了JDBC代码,与本身的职责“销售”不符了,此时,我们可以虚构一个对象,该对象专门处理数据库操作,如叫做PersistentStorage。该对象不存在概念模型中的。

    纯虚构:当我们穷途末路时所捏造的某物

    2)、相关模式

    低耦合
    高内聚
    纯虚构通常接纳本来是专家模式所分配给该领域的职责
    所有GoF设计模式都是纯虚构

    3、间接性

    1)、什么是间接性?

    举个例子:

    代付/收单系统分别需要写一遍连接建行/工行的代码,一是麻烦,二是银行接口变动时,代付/收单都要改。

    而如果中间加一层:

    只需要在适配器中对接银行,一旦接口变动也只需要更改适配器即可。

    间接性-->纯虚构-->低耦合

    2)、相关模式

    适配器(Adapter)
    桥(Bridge)
    外观(Facade)
    观察者(Observer)
    中介(Mediator)

    4、防止异变

    1)、什么叫防止异变?

    设计时,尽可能的减少因为变化带来的代码变更或较大变更。

    2)、如何防止异变?

    A、数据封装、接口、多态、间接性、标准(都是源于防止异变[PV]的)
    B、数据驱动设计
    C、服务查询:JNDI、webservice的UDDI
    D、解释器驱动设计:读取外部配置文件、执行外部脚本。。。
    E、反射(Method.invoke)或Meta-Level 设计
    F、标准语言:如SQL
    G、LSP:采用对接口的不同实现或扩展超类的子类防止异变。如下图:

    无论传递任何ITaxCalculatorAdapter的实现类,该方法都应该“按照预期”工作。


    再如:a.getB().getC().getD(),一旦迭代,随时会变更代码。可以获取其他对象,但是,不要太深,一般1级,即:a.getB()。

    3)、相关模式或原则

    多态、接口、间接性、数据封装
    大部分的GoF模式

    进入《GRASP前5种模式

  • 相关阅读:
    [codevs 1227] 方格取数 2
    记冬令营
    Codeforces Round 558(Div 2)题解
    Educational Round 64 题解
    [GXOI/GZOI2019]与或和(位运算,单调栈)
    LOJ6053 简单的函数(min_25筛)
    LOJ6235 区间素数个数(min_25筛)
    min_25筛学习笔记
    CF1142C U2(计算几何,凸包)
    关于一些没做出来的SBCF题
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11287651.html
Copyright © 2011-2022 走看看