grasp设计模式笔记回顾
根据讲师所讲做了一下笔记以便自己能方便学习:
------------------------------------------grasp设计模式;
grasp(general responsibility assignment software patterns:通用职责分配软件模式)模式相对于gof23模式更加抽象,
它的核心思想:职责如何分配和如何用用职责设计对象;
它的五个基本模式:
---信息专家、创建者、高内聚、低耦合、控制器;
四个扩展模式;
---多态性、纯虚构、间接性、防止变异;
---------------------------------------------
---------------------信息专家:
职责分配给那个对象,要看这个职责所需要的信息是哪个对象所拥有的,拥有资源的对象
才有资格执行职责,这也体现了对象封装的概念。信息的拥有者,同时就是对象的操作者,
可以减少不必要的类之间的关联,体现了设计原则:类的单一职责。
---------------------创建者:
类的实例应该有谁来创建;创建的职责应该交给谁;
b_=>a:包含,聚集、记录、频繁使用、有出事化数据;
优点:整个结构很清晰,有利于类或组件的使用,防止职责分散(信息专家),降低耦合度;
---------------------高内聚:
解决一个怎样才能降低类的复杂度,简化控制,
我们赢将紧密相关的功能或职责分配给同一个类(各司其职)
优点:聚集相关的功能结构清晰,容易理解。
类的单一,使得简化。
-----------------------低耦合:
如何降低类之间的关联程度,能适应需求变化;
为类分配职责时,应该尽量降低类之间的关联关系;
使得系统中某一部分的变化对其他部分影响降低到最低;
-----------------------控制器:
在UI之外,应该由哪个类处理系统的事件呢。
把系统事件处理的职责分配给controller类;
好处:防止同类职责的分散,满足高内聚,低耦合原则,变化的高度适应能力;
-----------------------多态性:
如何创建可插拔的软件构件。
当相关选择或行为岁类型有所不同时,使用多态操作作为变化的行为类型分配职责。
-----------------------纯虚构:
有时候不想违背高内聚低耦合的目标,但信息专家模式提供的解决方案又不合适时。
solution:对人为制造的类分配一组高内聚的职责,该类并不代表问题领域的概念-
虚构的事物,用以支持高内聚,低耦合和复用。
个人理解:为了达到更好的设计而虚构出来的对象来去行使某些不好分配的职责。
比如gof中命令模式,我们虚构出一个类来存储命令,以实现排队功能。
gof设计模式全都是纯虚构。为了更好的解决问题虚构出来的类;
------------------------间接性:
比如终结者、adapter适配器,都起到了简介的效果
------------------------防止变异:
为了不让对象内部的变化或不稳定性不会对其他元素产生不良影响(实际高内聚)
我们可以通过创建稳定的接口来解决,就是所说的针对接口编程,而不是针对实现编程。
像封装、多态、接口、虚拟机、配置文件都是为了这个,哪里动就封装哪里,以至于不影响其他
的相关联的对象,同样也是为了更好的变化和扩展。使之更稳健。
grasp设计模式笔记回顾的更多相关文章
- php设计模式笔记:单例模式
php设计模式笔记:单例模式 意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现 ...
- JAVASE笔记回顾
第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...
- Asp.net设计模式笔记之二:应用程序分离与关注点分离
本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离 ...
- [设计模式] .NET设计模式笔记 - 了解设计模式
今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构 ...
- php设计模式笔记--总结篇
一.引入 设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多 ...
- <大话设计模式>笔记
读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...
- Javascript设计模式笔记
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...
- 高级需求分析UML建模设计模式笔记
1.REQ->HLR 分析 全系统性质->AD设计 Context,BOM,Conception 2.REQ->LLR 分析 模块分析->DD设计 + 编码 Feature,B ...
- 设计模式笔记(一):Singleton 设计模式
今天开始学习设计模式,借此机会学习并整理学习笔记. 设计模式是一门不区分语言的课程,什么样的编程语言都可以用到设计模式.如果说java语法规则比作武功招式的话,那么设计模式就是心法. 设计模式共有23 ...
随机推荐
- nefu117 素数个数的位数,素数定理
素数个数的位数 Time Limit 1000ms Memory Limit 65536K description 小明是一个聪明的孩子,对数论有着非常浓烈的兴趣.他发现求1到正整数10n 之间有多少 ...
- java缓存技术(转)
最近在做java缓存,了解了一下.以下仅是对map对方式讨论.没有对点阵图阵讨论.作缓存要做以下2点: 1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问 ...
- Java虚拟机参数设置(转)
今天在加载一幅图片时,eclipse报出如下错误: “Exception in thread "main" java.lang.OutOfMemoryError: Java hea ...
- 军医王-moTestin云测试看好移动医疗行业
看医生汪谟军:Testin云測在移动医疗产业大有可为 2014/10/21 · Testin · 开发人员訪谈 日常生活可能常常碰到这种情况:突然遇上头疼脑热.小病小痛,去医院又不方便:非常想了解家人 ...
- 使用Hadoop的MapReduce与HDFS处理数据
hadoop是一个分布式的基础架构,利用分布式实现高效的计算与储存,最核心的设计在于HDFS与MapReduce,HDFS提供了大量数据的存储,mapReduce提供了大量数据计算的实现,通过Java ...
- 数字使用相应的加密策略传递一个字符串后Java实现代码
公司采用公用电话传递数据,数据小于8整数位,为了确保安全, 在转移的过程中需要加密,加密规则如下面的: 第一个数据下降,附图然后各加5,和除以10的余数取代该数字, ...
- 优秀团队建设--美国式团队(ppt)
美国式团队 一.团队精神 团队精神反映一个人的素养.一个人的能力,一个人与别人合作的精神和能力.一个团队是个有机的总体,作为个人,仅仅有全然融入到这个有机总体之中,才干最大限度地体现自己的价值. 团队 ...
- Nyoj 修路方案(次小生成树)
描述 南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路. 现在已经知道哪些城市之间可以修路,如果修路,花费是多少. 现在,军师小工已经找到 ...
- EasyX
官方网站:http://www.easyx.cn/ 安装图解:http://www.easyx.cn/news/View.aspx?id=5 系统支持[1] 编译环境版本:Visual C+ ...
- nodejs爬虫系统
其中express是服务端框架 request相当于前端的ajax请求 cheerio相当于jq 开始 首先我们先新建一个 crawler目录 执行 npm install express -g 命令 ...