1、创建者(Creator)

问题:谁创建类A?
答:来自领域模型、设计模型(交互图、类图)

2、信息专家

问题:给对象分配职责的基本原则是什么?
回答:谁具有完成该职责的信息,谁负责该职责。

因为根据图17-5知道,board汇集了square的信息。即board对square门清。

3、低耦合

为啥专家把获取Square的职责分配给了Board?而不是Dog?

除了board对square门清以外,就是低耦合。那什么叫低耦合呢?就是类之间的关联要小些,即当变化功能时,不要改变过多的类。

问题:如何减少因变化产生的影响?
方案:分配职责,降低耦合度(不必要的耦合去掉)。

4、控制器

就是MVC中的C。在V(视图层)和M(领域层)之间搭建桥梁。

5、高内聚

耦合是类之间的,内聚是类内部的。

A:一个类内部有100个方法2000行代码

B:一个类内部有10个方法200行代码

以上那个好?当然是B好,因为A基本把所有事都做了,难维护。A叫低内聚,B叫高内聚。

UML-GRASP前5种模式的更多相关文章

  1. UML-GRASP后4种模式

    1.多态 1).什么是多态 问题:if-else耦合度过高 解决: 方法1:接口 方法2:超类里需多态的方法前加上{abstract} 2).相关模式 防止异变 大量GoF,如适配器(Adapter) ...

  2. LVS负载均衡的三种模式和八种算法总结

    三种LVS负载均衡模式 调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。 LVS负载均衡模式---1.NAT模式 NAT用法本来是因为网络I ...

  3. MySQL binlog日志三种模式选择及配置

    在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...

  4. Binlog的三种模式

    binlog模式分三种(row,statement,mixed) 1.Row 日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有 ...

  5. mysql binlog日志的三种模式

    1.statement level模式 每一条会修改数据的sql都会记录到master的bin-log中.slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行.优 ...

  6. mysql bin-log三种模式

    MySQL的bin-log日志备份有三种模式,分别是:ROW.Statement.Mixed 一.Row 日志会记录成每一行数据被修改成的形式,然后再slave端再对相同的数据进行修改,只记录要修改的 ...

  7. [自制操作系统] 第05回 CPU的三种模式

    目录 一.前景回顾 二.实模式和保护模式 一.前景回顾 在之前我们说到,loader的作用才是读取加载操作系统内核,那么我们的重心就应该是loader.S文件,其实我们接下来也的确是会往loader. ...

  8. UML总结4---UML九种图关系说明

    转自:http://blog.csdn.NET/chenyujing1234/article/details/8173519 UML中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...

  9. GRASP软件设计的模式和原则

    GRASP 模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.”这是关于模式最经典的定义,作者是建筑大师Christopher Alexander.如果是第一次看到这 ...

随机推荐

  1. Git 的 4 个阶段的撤销更改

    虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握.以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完 ...

  2. 吴裕雄--天生自然java开发常用类库学习笔记:NumberFormat

    import java.text.* ; public class NumberFormatDemo01{ public static void main(String args[]){ Number ...

  3. 在excel表格里,为所有数字添上绿色小三角

    在excel表格里,为所有数字添上绿色小三角的方法有4种: 1. 为一个单元格添加:直接在单元格里添加一个英文的逗号 2. 为一列数据添加:选中要添加绿色小三角的列,选择 数据-->分列--&g ...

  4. GeneWise

    GeneWise是用于将蛋白质序列进行同源预测的软件

  5. flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用

    之前一直用的Centos或者Red hat,自从使用Ubuntu后,发现Ubuntu使用起来更方便,自此爱上Ubuntu. 一.从github上下载flask应用 1.我已经成功将自己编写好的应用上传 ...

  6. Erlang/Elixir精选-第5期(20200106)

    The forgotten ideas in computer science-Joe Armestrong 在2020年的第一期里面,一起回顾2018年Joe的 The forgotten idea ...

  7. 十六、JavaScript之%运算符

    一.代码如下 二.运行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...

  8. Ctags命令

    ctags -R 生成目录下的tags文件 只生成php文件的 tags文件 ctags --langmap=php:.engine.inc.module.theme.php --php-kinds= ...

  9. Mysql: if 结构

    if结构 语法 if  条件1  then  语句1; elseif   条件2   then  语句2; ... else 语句n;   # 可以不写 应用场合:应用在begin end 中 SEL ...

  10. windows Driver 查询指定键值

    NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONSTANT_STR ...