JavaShuo
栏目
标签
P3_C17:设计对象的原则
时间 2019-11-29
标签
p3
c17
设计
对象
原则
栏目
C&C++
繁體版
原文
原文链接
GRASP:Designing Objects with Responsibilities
阅读书上第17章
数据库
outputs of object Design
UML 交互图、类图、包图
UI草图和原型
数据库模型
报表的草图和原型
Responsibility-Driven Design
UML把职责定义为类元的契约或义务
对象的行为职责
自身执行一些行为,如建立对象或计算
初始化其余对象中的动做
控制和协调其余对象中的动做
对象的认知职责
对私有封装数据的认知
对相关对象的认知
对其可以导出或计算的事物的认知
准则:
领域模型描述了领域对象的属性和关联,所以一般产生与“认知”相关的职责
大职责具备数百个类和方法,小职责可能只有2个方法
GRASP:
General Responsibility Assignment Software Patterns
绘制交互图是考虑将职责实现为方法的时机
模式:以结构化形式对这些问题、解决方法和命名进行描述使其系统化,那么这些原则和习惯用法称为模式
函数
Creator:谁应该负责建立类的实例
若是如下条件之一为真,将建立A的实例的职责分配给类B
B包含或组成汇集了A
B记录了A
B直接使用A
B具备A的初始化数据
好处:
支持 low coupling,减小维护的依赖性和增长重用的可能性
准则:
封装的容器和记录类是建立其所容纳和事物的很好的选择
Information Expert:若是给定键值,谁知道对象的相关信息
把职责分配给具备完成该职责所需信息的那个类
好处:
信息封装,支持低耦合
鼓励连接使用更多易于理解和维护的轻量级类定义
Low Coupling:如何减小因变化产生的影响
分配职责以使(没必要要的)耦合保持在较低的水平
coupling:元素与其余元素的链接、感知及依赖的程度的度量
在面向对象语言中,如下状况X有对Y的耦合
X有Y实例/Y类的属性
X对象调用Y对象的函数
X有一个方法涉及到Y实例/Y类,如Y的参数或者局部变量或X方法返回一个Y实例
X是Y的直接/间接子类,子类和超类之间有很强的耦合性
Y是接口,X是实现
好处
不会被其余组件的改变所影响
便于理解
易于复用
高耦合自己不是问题所在,而是和不稳定的元素之间的耦合
Controller:在UI层上的哪一个对象应该首先从UI层接收该消息
控制器:UI层外第一个负责接收并处理系统操做信息的对象
把职责分配给能表明下列选择之一的对象:
外观控制器:表明所有“系统”、“根对象”、运行软件的设备或主要的子系统,外观控制器的全部变形
用例控制器:表明发生系统操做的用例场景
准则
控制器应当把须要完成的工做委派给其余对象。控制器只是协调或控制这些活动,自己并不完成大量工做
概念
entity object: 与应用无关的(通常是持久性的)领域软件对象
boundary object: 接口的抽象
control object:控制器模式描述的用例处理者
优势
增长了可复用和接口可拔插的潜力
得到了推测用例状态的机会
臃肿的控制器
迹象
只有一个控制器类来接收系统中所有的系统事件,并且有不少系统事件
为了处理系统时间,由控制器完成诸多必要的任务,而不是把工做委派出去
控制器有不少属性而且他维护关于系统或领域的重要信息,(这些职责本应分配给其余对象)或者他要复制在其余地方才能找到的信息
解决方案
增长控制器
设计控制器,是他吧完成每一个系统操做的职责委派给其余对象
High Cohesion:怎样使对象保持有内聚、可理解和可管理,同时具备支持低耦合的附加做用
低内聚意味着对象仅靠自己工做,而且须要和大量其余对象进行协做,全部交互也都趋向高耦合
优势
可以更加轻松、清楚地理解设计
简化维护和改进工做
一般支持低耦合
因为内聚的类能够用于某个特定目的,所以细粒度、相关性强的功能的重要性加强
相关文章
1.
面向对象设计的原则
2.
面向对象的设计原则
3.
面向对象设计的SOLID原则
4.
面向对象的设计原则(SOLID)
5.
面向对象的设计原则(二)
6.
面向对象的设计原则(三)
7.
面向对象设计的11原则
8.
面向对象的设计原则(六原则一法则)
9.
面向对象设计的原则——单一职责原则
10.
面向对象的程序设计原则之SOLID原则
更多相关文章...
•
Web 创建设计
-
网站建设指南
•
ACID原则是什么?
-
NoSQL教程
•
IntelliJ IDEA代码格式化设置
•
使用Rxjava计算圆周率
相关标签/搜索
面向对象设计原则
原则
六大设计原则
对象
面向对象设计
原型与对象
对象的学习
面向对象的程序设计
面对对象程序设计(java)
对象和对象之间的联系
C&C++
网站建设指南
MyBatis教程
Hibernate教程
设计模式
计算
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
gitlab新建分支后,android studio拿不到
2.
Android Wi-Fi 连接/断开时间
3.
今日头条面试题+答案,花点时间看看!
4.
小程序时间组件的开发
5.
小程序学习系列一
6.
[微信小程序] 微信小程序学习(一)——起步
7.
硬件
8.
C3盒模型以及他出现的必要性和圆角边框/前端三
9.
DELL戴尔笔记本关闭触摸板触控板WIN10
10.
Java的long和double类型的赋值操作为什么不是原子性的?
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
面向对象设计的原则
2.
面向对象的设计原则
3.
面向对象设计的SOLID原则
4.
面向对象的设计原则(SOLID)
5.
面向对象的设计原则(二)
6.
面向对象的设计原则(三)
7.
面向对象设计的11原则
8.
面向对象的设计原则(六原则一法则)
9.
面向对象设计的原则——单一职责原则
10.
面向对象的程序设计原则之SOLID原则
>>更多相关文章<<