GRASP原则九: 隔离变化

   Protected Variations

   需求一定会变化的!如何做到以系统的局部变化为代价就可以应对这一点?
4.1 GRASP rule9: Protected Variations

   Name: Protected Variations 隔离变化

   Problem: 如何设计对象、系统和子系统,使得这些成分里面的变化因素、 不稳定因素不会对系统的其余

    部分造成意想不到的影响?

    How to design objects, systems and subsystems so that the variations and instability in these

    elements does not have an undesirable impact on other elements?

   Solution: 标识出能够预计的变化点或者不稳定点,职责分配的时候创建一 个稳定的接口,把它们与

    系统的其余部分隔离开来

    Identify points of predicted variation or instability; assign responsibilities so that you create

    a stable interface around them

   “隔离可能的变化”是一个设计原则,它鼓励使用一个稳定的接口来封装可以 预知的变更点。以下技巧都使

    用了PV

     数据封装 、多态 、数据-驱动设计, 服务查询,配置文件、接口

     ….等都是这种机制的不同实现
     隔离变化是一种高度抽象的原则,指导了设计和编程过程的大多数机制、模式programming
4.3 Protected Variations: discussion

   需要注意的两种可能的变化点

     变化点: 在当前系统或者当前需求中已经存在了

      Variation point: variations in the existing current system or requirements

     演化点: 推测的类型变化可能发生在今后,但在当前的需求中 不存在

      Evolution point: speculative types of variation that may arise in the future, but which are not

      present in the existing requirements

7.9 GRASP原则九: 隔离变化的更多相关文章

  1. 7.6 GRASP原则六: 多态 Polymorphism

    GRASP原则六: 多态 Polymorphism  How to handle alternative behaviors based on type 如何处理依据类型不同而有 不同行为的一类需求 ...

  2. 7.8 GRASP原则八: 间接 Indirection

    GRASP原则八: 间接 Indirection  若两个对象直接连接,导致耦合太紧,如何解决?3.1 GRASP rule8: Indirection 间接  Name: Indirection ...

  3. 7.4 GRASP原则四:控制器 Controller

    4.GRASP原则四:控制器 Controller  What first object beyond the UI layer receives and co-ordinates (control ...

  4. 7.3 GRASP原则三: 低耦合 Low Coupling

    3.GRASP原则三: 低耦合 Low Coupling  How to support low dependency, low change impact and increased reuse? ...

  5. 设计模式之六大原则——接口隔离原则(ISP)

    设计模式之六大原则——接口隔离原则(ISP)  转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html 接口隔离原则 ...

  6. 运用GRASP原则来做uml交互类图-------pos机实例

    重要的几个GRASP原则:1.控制器模式   2.创建者模式 (原则)3.信息专家模式(原则) 4. 高内聚 低耦合   这里所说的模式并不是java中针对具体的事件的设计模式 主成功场景的几个操作: ...

  7. 7.7 GRASP原则七: 纯虚构 Pure Fabrication

    GRASP原则七: 纯虚构 Pure Fabrication  如果依据信息专家原则获得的解决方案不合适,既不想违反低耦合.高内聚,也不想违 反其他的原则, 该如何把职责分配给对象?  左右为难… ...

  8. 7.5 GRASP原则五:高内聚 High Cohesion

    GRASP原则五:高内聚 High Cohesion  How to keep objects focused, understandable and manageable, and as a si ...

  9. 7.2 GRASP原则二:信息专家 Information Expert

    2.GRASP原则二:信息专家 Information Expert  What is a general principle of assigning responsibility to obje ...

随机推荐

  1. 基于UVM的verilog验证

    Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的UVM验证开发有哪些坑,以及怎么避免. Introduction 本例使用环境:ModelSim 10.2c,UV ...

  2. iot-web增加apis-namespace组件

    1  文件夹复制 apis 2 增加 3 增加module

  3. JUnit单元测试代码

    package com.storage.test; import org.junit.Before; import org.junit.Test; import org.springframework ...

  4. React 添加对 Less 的支持, 使用 create-react-app 脚手架

    ---恢复内容开始--- 参考博客与我自己的当前版本有一点出入, 所以就将 参考博客写到文章后面去了. 我的电脑:  系统: Ubuntu16.04, 1, 安装脚手架: create-react-a ...

  5. Qt setMouseTracking(true) 无效

    网友1:并非只在QWidget中设置setMouseTracking(true)才好用,如若在QMainwindow中设置为true还是不能跟踪,解决办法为在ui中的属性栏主窗口的“mouseTrac ...

  6. ThinkPHP数据库操作相关

  7. 微信OpenID获取

    用户要求在微信端登录一次后,以后不需要再登录.  我的系统是单独的一个网站. 使用MVC的记住密码功能, 如果用户重启,就还是要输入密码,所以需要有一个唯一不变的用来标示用户的ID.  OpenID就 ...

  8. 主线程——main线程

    定义一个普通的类: 引用这个类,执行main方法,main方法就是一个主线程: 线程:进程的执行单元,可以理解为栈内存中的所执行的方法(除了main方法之外都是线程中的run方法)地址开辟通往cpu的 ...

  9. 修复svn hook导致的字符集错误

    修改pre-commit钩子,如果返回中文信息,可能会报如下错误: Error output could not be translated from the native locale to UTF ...

  10. 将Bdd100k数据集转为CoCo数据集

    小可爱,加油噻~ 添加上级目录 import sys sys.append('../..') 这样 from ... import 就会把加入的路径要扫描哒 os.walk() 方法用于通过在目录树中 ...