OOD沉思录 --- 导引
一个对象一定会有如下4个属性:
1,它的身份标示,可能只是它在内存中的地址;
2,它的类的属性(通常是静态属性)和这些属性的值(通常是动态的);
3,它的类的行为(从实现者的角度看);
3,它的公开接口(从用户的角度看).
2.1 所有数据都应该隐藏在它所在的类内部.
考虑最简单的点Point类(X,Y),再考虑可能点的实现是用的极坐标,那么是否该领悟到这一点了?
OOD沉思录 --- 导引的更多相关文章
- OOD沉思录 --- 类和对象的关系 --- 包含关系4
		4.9 在实现语义约束时,最好根据类定义来实现.但是这经常会导致泛滥成灾的类,在这种情况下约束应当在类的行为中实现,通常在类的构造函数中实现,但不是必须如此. 还是以汽车为例,我们看汽车的定义,为了集 ... 
- OOD沉思录 --- 类和对象的关系 --- 包含关系3
		4.7 类包含的对象数目不应当超过开发者短期记忆数量,这个数目通常应该是6左右 4.8 让系统在窄而深的包含体系中垂直分布 假设有如下两份菜单: 正餐 --->甜瓜 --->牛排 ---& ... 
- OOD沉思录 --- 类和对象的关系 --- 包含关系2
		4.6 尽量让类中定义的每个方法尽可能多地使用包含的对象(即数据成员) 这其实就是高内聚的翻版强调.如果每个类的情况并非如此,那很可能是这一个类表示了两个或更多的概念,记住一个类只应该表示一个概念. ... 
- OOD沉思录 --- 类和对象的关系 --- 包含关系1
		4.5 如果类包含另一个类的对象,那么包含类应当向被包含的对象发送消息(调用方法). 也就是说,所有的包含关系都应当是使用关系. 如果不是这样,那么包含的类有什么用处呢?当然,面向过程的开发人员会想 ... 
- OOD沉思录 --- 类和对象的关系 --- 使用关系原则
		4.1 尽量减少类的协作的数量,即减少使用者和被使用者的数量. 协作意味着一定程度的耦合,但是完全没有协作的类也是没有意义的,最多只能作为一个库使用. 通过抽象,依赖接口,可以最大程度减少依赖的实现类 ... 
- OOD沉思录 --- 类和对象的关系 --- 使用关系
		使用关系 对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案 方案一: A包含了B,B作为一个成员定义在A的类中,那 ... 
- OOD沉思录 --- 面向动作与面向对象 --- 避免泛滥成灾的类
		3.7 从设计中取出不需要的类 只有Get/Set方法的类不算是一个必要的类,Get/Set方法也不算是有意义的行为.这种类降级为属性更加合适. 3.8 去除系统外部的类 如果一个类只调用系统领域的方 ... 
- OOD沉思录 --- 面向动作与面向对象 --- 避免全能类
		面向过程的软件开发通过非常集中化的控制机制来分解功能,在程序设计中表现就是大量的条件判断,深层次的循环嵌套等. 这种模式下,我们可以通过分析方法的参数,局部变量及其访问的全局变量来得到方法对数据的依赖 ... 
- OOD沉思录 --- 继承
		一,继承只应被用来为特化层次结构建模 实际上也就是要满足LSP原则,水果类<-榴莲的继承是特化 二,派生类必须知道他们的基类,基类不应当知道他们的派生类 复用的前提 三,基类中的所有 ... 
随机推荐
- 「Django」rest_framework学习系列-解析器
			满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x& ... 
- 多重检验_LSD方法不准确性
			sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ... 
- K8S dashboard 创建只读账户
			1.创建名字为“Dashboard-viewonly“的Cluster Role,各种资源只给予了list,get,watch的权限.dashboard-viewonly.yaml --- apiVe ... 
- (转) 使用vivado创建工程 3
			Create a Hello World application In this experiment we will use Xilinx SDK to create a simple Hello ... 
- [DeeplearningAI笔记]卷积神经网络4.6-4.10神经网络风格迁移
			4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.6什么是神经网络风格转换neural style transfer 将原图片作为内容图片Cont ... 
- libuv在mingw下编译
			libuv是一个基于事件的异步IO库,来自node.js项目. libuv提供了Makefile.mingw,供MingW编译,由其中的规则我们可以得到一下编译步骤: cd libuv/src gcc ... 
- svn工具的使用问题总结
			前言: 最近在开发的时候,由于需求太多,开发周期长短不一,从主线上切了多个分支(一般不在主线trunk上开发,万一线上出问题可及时修改代码上线),在部分功能上线后,想把代码同步到新的分支上去,最开始的 ... 
- ASP.NET MVC4+EasyUI+EntityFrameWork5权限管理系统——数据库的设计(一)
			快一年没写博客了,这段时间感觉好迷茫,写点博客,记录一下自己的成长过程,希望对大家也有帮助 先上图 一个用户可以有多个角色,一个用户可以属于多个部门,这些都可以控制到权限,有时特殊要求,同样的部门和角 ... 
- Python学习笔记(九)返回函数
			摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318352367 ... 
- 【BZOJ】4129: Haruna’s Breakfast 树分块+带修改莫队算法
			[题意]给定n个节点的树,每个节点有一个数字ai,m次操作:修改一个节点的数字,或询问一条树链的数字集合的mex值.n,m<=5*10^4,0<=ai<=10^9. [算法]树分块+ ... 
