根据讲师所讲做了一下笔记以便自己能方便学习:

------------------------------------------grasp设计模式;

grasp(general responsibility assignment software patterns:通用职责分配软件模式)模式相对于gof23模式更加抽象,

它的核心思想:职责如何分配和如何用用职责设计对象;

它的五个基本模式:

---信息专家、创建者、高内聚、低耦合、控制器;

四个扩展模式;

---多态性、纯虚构、间接性、防止变异;

---------------------------------------------

---------------------信息专家:

职责分配给那个对象,要看这个职责所需要的信息是哪个对象所拥有的,拥有资源的对象

才有资格执行职责,这也体现了对象封装的概念。信息的拥有者,同时就是对象的操作者,

可以减少不必要的类之间的关联,体现了设计原则:类的单一职责。

---------------------创建者:

类的实例应该有谁来创建;创建的职责应该交给谁;

b_=>a:包含,聚集、记录、频繁使用、有出事化数据;

优点:整个结构很清晰,有利于类或组件的使用,防止职责分散(信息专家),降低耦合度;

---------------------高内聚:

解决一个怎样才能降低类的复杂度,简化控制,

我们赢将紧密相关的功能或职责分配给同一个类(各司其职)

优点:聚集相关的功能结构清晰,容易理解。

类的单一,使得简化。

-----------------------低耦合:

如何降低类之间的关联程度,能适应需求变化;

为类分配职责时,应该尽量降低类之间的关联关系;

使得系统中某一部分的变化对其他部分影响降低到最低;

-----------------------控制器:

在UI之外,应该由哪个类处理系统的事件呢。

把系统事件处理的职责分配给controller类;

好处:防止同类职责的分散,满足高内聚,低耦合原则,变化的高度适应能力;

-----------------------多态性:

如何创建可插拔的软件构件。

当相关选择或行为岁类型有所不同时,使用多态操作作为变化的行为类型分配职责。

-----------------------纯虚构:

有时候不想违背高内聚低耦合的目标,但信息专家模式提供的解决方案又不合适时。

solution:对人为制造的类分配一组高内聚的职责,该类并不代表问题领域的概念-

虚构的事物,用以支持高内聚,低耦合和复用。

个人理解:为了达到更好的设计而虚构出来的对象来去行使某些不好分配的职责。

比如gof中命令模式,我们虚构出一个类来存储命令,以实现排队功能。

gof设计模式全都是纯虚构。为了更好的解决问题虚构出来的类;

------------------------间接性:

比如终结者、adapter适配器,都起到了简介的效果

------------------------防止变异:

为了不让对象内部的变化或不稳定性不会对其他元素产生不良影响(实际高内聚)

我们可以通过创建稳定的接口来解决,就是所说的针对接口编程,而不是针对实现编程。

像封装、多态、接口、虚拟机、配置文件都是为了这个,哪里动就封装哪里,以至于不影响其他

的相关联的对象,同样也是为了更好的变化和扩展。使之更稳健。

grasp设计模式笔记回顾的更多相关文章

  1. php设计模式笔记:单例模式

    php设计模式笔记:单例模式 意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现 ...

  2. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...

  3. Asp.net设计模式笔记之二:应用程序分离与关注点分离

    本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离 ...

  4. [设计模式] .NET设计模式笔记 - 了解设计模式

    今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构 ...

  5. php设计模式笔记--总结篇

    一.引入  设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多 ...

  6. <大话设计模式>笔记

    读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...

  7. Javascript设计模式笔记

    Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...

  8. 高级需求分析UML建模设计模式笔记

    1.REQ->HLR 分析 全系统性质->AD设计 Context,BOM,Conception 2.REQ->LLR 分析 模块分析->DD设计 + 编码 Feature,B ...

  9. 设计模式笔记(一):Singleton 设计模式

    今天开始学习设计模式,借此机会学习并整理学习笔记. 设计模式是一门不区分语言的课程,什么样的编程语言都可以用到设计模式.如果说java语法规则比作武功招式的话,那么设计模式就是心法. 设计模式共有23 ...

随机推荐

  1. Cocos2d-x 脚本语言Lua使用

    Cocos2d-x 脚本语言Lua使用 前面几篇博客已经把Lua的相关基础知识介绍了.本篇博客就来介绍一下,怎样在Cocos2d-x项目中使用Lua这门脚本语言进行开发.因为笔者使用的时Mac系统.所 ...

  2. Android GPS获取当前经纬度坐标

    APP中可能会遇到一种需求,就是将当前所在位置的坐标传到server上,今天我提供三种途径去获取经纬度坐标信息,第一种是通过Android API来实现,另外一种通过百度地图API来实现,第三种通过天 ...

  3. cocos2dx 解释二具体的启动过程:内存管理和回调

    在上一篇的第二部分中.我们有一句代码待解释的: // Draw the Scene void CCDirector::drawScene(void) { -...     //tick before ...

  4. android layout物业介绍

    android:id 为控件指定对应的ID android:text 指定控件其中显示的文字,须要注意的是,这里尽量使用strings.xml文件其中的字符串 android:gravity 指定Vi ...

  5. HBase加Solr

    HBase加Solr 如何解决分布式系统数据事务一致性问题 (HBase加Solr) 摘要:对于所有的分布式系统,我想事务一致性问题是极其非常重要的问题,因为它直接影响到系统的可用性.本文以下所述所要 ...

  6. OJ提交题目中的语言选项里G++与C++的区别(转载)

    原文链接:http://blog.polossk.com/201405/c-plus-plus-g-plus-plus G++? 首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编 ...

  7. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  8. 利用BBED恢复UPDATE改动前的值

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30615151 实验步骤例如以下: 1.创建表guo_test1 gyj@PROD> ...

  9. RPC框架

    RPC框架实现 - 路由控制篇 2015-04-27 22:26 by bangerlee, 499 阅读, 1 评论, 收藏, 编辑 RPC(Remote Procedure Call,远程过程调用 ...

  10. HTML5多图片拖拽上传带进度条

    前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...