grasp设计模式应用场景_grasp设计模式笔记回顾
根据讲师所讲做了一下笔记以便自己能方便学习:
------------------------------------------grasp设计模式;
grasp(general responsibility assignment software patterns:通用职责分配软件模式)模式相对于gof23模式更加抽象,
它的核心思想:职责如何分配和如何用用职责设计对象;
它的五个基本模式:
---信息专家、创建者、高内聚、低耦合、控制器;
四个扩展模式;
---多态性、纯虚构、间接性、防止变异;
---------------------------------------------
---------------------信息专家:
职责分配给那个对象,要看这个职责所需要的信息是哪个对象所拥有的,拥有资源的对象
才有资格执行职责,这也体现了对象封装的概念。信息的拥有者,同时就是对象的操作者,
可以减少不必要的类之间的关联,体现了设计原则:类的单一职责。
---------------------创建者:
类的实例应该有谁来创建;创建的职责应该交给谁;
b_=>a:包含,聚集、记录、频繁使用、有出事化数据;
优点:整个结构很清晰,有利于类或组件的使用,防止职责分散(信息专家),降低耦合度;
---------------------高内聚:
解决一个怎样才能降低类的复杂度,简化控制,
我们赢将紧密相关的功能或职责分配给同一个类(各司其职)
优点:聚集相关的功能结构清晰,容易理解。
类的单一,使得简化。
-----------------------低耦合:
如何降低类之间的关联程度,能适应需求变化;
为类分配职责时,应该尽量降低类之间的关联关系;
使得系统中某一部分的变化对其他部分影响降低到最低;
-----------------------控制器:
在UI之外,应该由哪个类处理系统的事件呢。
把系统事件处理的职责分配给controller类;
好处:防止同类职责的分散,满足高内聚,低耦合原则,变化的高度适应能力;
-----------------------多态性:
如何创建可插拔的软件构件。
当相关选择或行为岁类型有所不同时,使用多态操作作为变化的行为类型分配职责。
-----------------------纯虚构:
有时候不想违背高内聚低耦合的目标,但信息专家模式提供的解决方案又不合适时。
solution:对人为制造的类分配一组高内聚的职责,该类并不代表问题领域的概念-
虚构的事物,用以支持高内聚,低耦合和复用。
个人理解:为了达到更好的设计而虚构出来的对象来去行使某些不好分配的职责。
比如gof中命令模式,我们虚构出一个类来存储命令,以实现排队功能。
gof设计模式全都是纯虚构。为了更好的解决问题虚构出来的类;
------------------------间接性:
比如终结者、adapter适配器,都起到了简介的效果
------------------------防止变异:
为了不让对象内部的变化或不稳定性不会对其他元素产生不良影响(实际高内聚)
我们可以通过创建稳定的接口来解决,就是所说的针对接口编程,而不是针对实现编程。
像封装、多态、接口、虚拟机、配置文件都是为了这个,哪里动就封装哪里,以至于不影响其他
的相关联的对象,同样也是为了更好的变化和扩展。使之更稳健。
grasp设计模式应用场景_grasp设计模式笔记回顾相关推荐
- grasp设计模式应用场景_GRASP设计模式
此文参考了这篇博客,建议读者阅读原文. 面向对象(Object-Oriented,OO)是当下软件开发的主流方法.在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳出 ...
- grasp设计模式应用场景_设计模式 GRASP GoF
借用公开课 Justice 中的话,了解设计模式不一定能让我们解决软件设计与开发中的问题,但能让我们在遇到问题时,思考的方式不至鲁莽与茫然. 五大设计原则 面向对象软件设计具有五大基本原则(首字母缩写 ...
- JavaScript设计模式系统讲解与应用-笔记
可参考:https://www.kancloud.cn/qeating/javascript-design/1555175 第1章 课程介绍 1.导学 设计模式:前端开发.客户端开发.后端开发=> ...
- 设计模式之美 精华总结 笔记(二)
文章目录 设计模式之美 精华总结 笔记(二) 一.面向对象精解 1.封装 2.抽象 3.继承 4.多态 5.思考:为什么有些语言不允许多继承 二.面向对象优于面向过程的地方 1.形式上 2.复用.扩展 ...
- javascript 保存原函数_前端工程师必须掌握的几个JavaScript设计模式及场景应用
作者 | 考拉海购前端团队链接 | https://juejin.im/post/59df4f74f265da430f311909设计模式的定义:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决 ...
- 设计模式之Flyweight模式(笔记)
设计模式之Flyweight模式(笔记) 享元模式:运用共享技术有效地支持大量细粒度的对象. 适用场合:假设一个应用程序适用了大量的对象.而大量的这些对象造成了非常大的存储开销时就应该考虑使用. 首先 ...
- javascript设计模式(javascript设计模式与开发实践读书笔记)
javascript设计模式(javascript设计模式与开发实践读书笔记) 单例模式 策略模式 代理模式 迭代器模式 发布-订阅模式 命令模式 组合模式 模板方法模式 享元模式 职责链模式 中介者 ...
- 23种设计模式应用场景
23种设计模式应用场景 创建型模式 工厂方法模式: 原型模式:clone/fork子线程 建造者模式:框架组件实例化 抽象工厂模式:业务+反射 单例模式:只读单实例场景 结构型模式 装饰模式:换装软件 ...
- 《设计模式》王争 学习笔记
<设计模式>王争 学习笔记 面向对象 面向对象 用面向对象编程语言,我们照样可以进行面向对象编程
最新文章
- 又一例“监视员工?”百度回应:和 996 无关,目前没有任何应用
- 《评人工智能如何走向新阶段》后记(深谈人工智能发展前沿)
- Delphi - 我的代码之窗体移动
- 计算机组成原理 — 服务器组成
- Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类
- mysql5.7命中率_MySQL5.7中 performance和sys schema中的监控参数解释(推荐)
- grunt前端构建工具使用教程
- linux android build tools,build.gradle 文件中的 Android SDK Build Tools version
- android switch自定义样式,Android自定义Switch样式
- zedboard板子上呼吸灯的实现(第一版)仿真代码的实现
- Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
- Redis学习资料汇总
- Carson带你学设计模式:这是一份全面 详细的设计模式学习指南
- 请简述Spring MVC的执行流程
- 抖音、美团等大厂千万级用户的Android客户端架构演进之路—
- switch条件语句与跳转语句(附分数分层案例)
- 剖析ArrayList / 计算机程序的思维逻辑
- 搭建GitLab代码管理仓库
- 电商产品精修训练营第3天_ps修复画笔工具_ps修补工具_ps仿制图章工具
- C编译器剖析_5.3.2 中间代码生成及优化_switch语句的翻译