时间:2021-05-26
思维导图
介绍
accessor:访问者,存储器——在本文翻译为“函数”
dumb:哑
domain class:用以处理业务逻辑
presentation class:用以处理”数据表现形式“
business logic:业务逻辑
unidirectional:单向的
bidirectional:双向的
collection:群集
Self Encapsulate Field状况:如果Client直接访问值域,会造成Client与值域之间的耦合关系逐渐变得笨拙,那么为这个值域建立取值/设置函数,并且只以这些函数来访问。动机:
“间接访问变量”:支持更灵活的数据获取方式,如lazy Initialization(意思是只有用到值时,才对它进行初始化。)
“直接访问变量”:代码比较容易阅读,不需要停下来说:“啊,这只是个取值函数”。
选择:1、代码规范,按照团队中大多数人的做法去做。
2、个人比较喜欢“直接访问变量”,直到这种方式带来麻烦为止。
martin(作者)的例子:你想获取superclass中的field,却又想在subclass中将该field改为计算后的值,这就最该使用Self Encapsulate Field。
我自己的例子:我一般会把field设置成private,如果外部变量,需要用到此field的时候,我就会用Self Encapsulate Field。或者field的值有变化的时候,用Self Encapsulate Field。
开发初期,我们也许会使用基本数据类型表示简单的行为。例如:你可能会用一个字符串表示电话号码,但是随后可能会出现电话号码的“格式化“,”验证“,”抽取区号“之类的特殊行为。——这时候我们就需要一个新类。
Replace Array with Object状况:你有一个数组,数组中的元素各自代表不同的东西,那么以对象替换数组,对于数组中的每个元素,以一个值域表示之。动机:
数组常用于一组相似对象。如果数组中的元素不同,很难明白数组中的第一个元素是人名这样的约定。对象就不同了,可以通过值域名称和函数名称传达这样的信息。——这样无须死记,无须注释。
Encapsulate Field状况:如果你的class中有一个public值域,那么将它声明为pirvate,并提供相应的访问函数。动机:
面向对象的原则之一就是封装(Encapsulate)或者称为”数据隐藏“。按照此原测,你绝不应该把数据声明为public。 ——public 数据被看成是一种不好的做法。 ——如果封装了,代码的修改就会比较简单,因为都集中在一个地方。一个函数除了访问函数(getting/setting)外,不提供其他行为,它终究只是一个dumb class(哑类)。这类class不能获得对象技术的优势。——解决哑类的方法是Move Method轻快的将它们移到新对象去。conclusion我希望能把我理解的东西与大家分享,欢迎大家提出宝贵意见。声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
交叉表查询是指能够对查询的数据进行汇总、求平均等计算,并对数据结构进行重新组织的查询。查询得到的数据分布在数据表的左侧和顶端,行列交叉处显示字段的计算结果。方法
Word中的数据排序通常是针对某一列的数据,它可以将表格某一列的数据按照一定规则排序,并重新组织各行在表格中的次序。下面我们以Word2003为例,给大家介绍表
有许多理由让你在页面中加入拖放的功能,其中最简单的理由是重新组织数据。举个例子,你可能希望用户能够重组一系列的页面元素,通过放置一个input或select组件
本文分析讲述了PHP代码维护,重构变困难的4种原因。分享给大家供大家参考,具体如下:代码维护,重构是件很令人不爽的一件事。以下几种情况,会让代码维护和重构变得很
随着习惯于通过移动设备观看视频的MZ代(千禧一代+Z代)的使用数量增加,各企业纷纷想抓住这一需求。CJonstyle于11日宣布,它已通过重新组织移动应用程序(