OOD沉思录 --- 类和对象的关系 --- 使用关系原则

4.1 尽量减少类的协作的数量,即减少使用者和被使用者的数量。

协作意味着一定程度的耦合,但是完全没有协作的类也是没有意义的,最多只能作为一个库使用。

通过抽象,依赖接口,可以最大程度减少依赖的实现类,对使用者来说,只看到接口的依赖,而具体的实现的依赖可以通后后期绑定来配置依赖关系。

如 菜单 ----〉牛肉

  ----〉羊肉

  ----〉鸡肉       可以抽象为

菜单---->肉类 <===牛肉

                         <===羊肉

                         <===鸡肉

其中---->代表使用,<====代表实现

4.2 尽量减少类和协作者之间传递的消息的数量。

4.3 尽量减少类与协作者之间的协作量

即减少类和协作者之间传递不同消息的数量。

4.4 尽量减少类的扇出。

类的消息(方法)数 X 发送的消息(调用其它类的方法)数 = 类的扇出。

时间: 2024-12-23 17:08:19

OOD沉思录 --- 类和对象的关系 --- 使用关系原则的相关文章

【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

(1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器可以自定义不同的状态栏如下: -(BOOL)prefersStatusBarHidden{ } -(UIStatusBarStyle)preferredStatusBarStyle{ } --如果我们需要交给UIApplication对象管理(iOS6之前就是),则需要如下设置: 先在info.plist中把默认的设置修改掉: 然后直接用如下代码即可: - (void)view

大型项目 类(对象)间的关系

思考一个问题: 类(对象)间的相互作用关系.人体的"大脑"支配着全身每个<部分>,与此同时每个 <部分> 的感知又        传回给<大脑>.        <大脑> 和 <部分> 看成两个类(对象)        <大脑> 和 <部分> 又是一个整体 <人>        <人> 即是一个整体的(项目)        :这样子考虑,整个项目不管多庞大都可以把每个 <部

OOD沉思录 --- 面向动作与面向对象 --- 避免泛滥成灾的类

3.7 从设计中取出不需要的类 只有Get/Set方法的类不算是一个必要的类,Get/Set方法也不算是有意义的行为.这种类降级为属性更加合适. 3.8 去除系统外部的类 如果一个类只调用系统领域的方法,而系统没有向该类调用,则可以认为这个类并不属于系统.可能只是系统的使用者,我们没必要去为此建模.     创建此类时应该问一问“这个类在系统内做什么事情?” 3.9 不要把操作变成类. “我需要一个做...事情的类”,如果有这种想法,请先认真斟酌.这个类真的代表了某个关键抽象概念吗? 名字是动词

Java学习8——类(对象)之间的关系

(基础语法结束,开始看面向对象) 关联 关联体现的是两个类之间语义级别的一种依赖关系,比如我和我的老师. 继承(一般和特殊) 继承是指一个类继承另外一个类的的功能,并可以增加新的功能,"XX是一个AA"的语义很符合继承的含义."猴子是一种动物"可以抽象为"猴子类"继承"动物类". 聚合(整体和部分) 聚集,整体和部分是可分离的,可以具有各自的生命周期.部分可以属于多个整体的对象,也可以 为多个整体对象共享,比如球员和球队.教练

OOD沉思录 --- 导引

一个对象一定会有如下4个属性: 1,它的身份标示,可能只是它在内存中的地址; 2,它的类的属性(通常是静态属性)和这些属性的值(通常是动态的); 3,它的类的行为(从实现者的角度看); 3,它的公开接口(从用户的角度看). 2.1 所有数据都应该隐藏在它所在的类内部. 考虑最简单的点Point类(X,Y),再考虑可能点的实现是用的极坐标,那么是否该领悟到这一点了? 2.2,类的使用者必须依赖类的公共接口,但类不能依赖它的使用者. 房子可以依赖闹钟,但是闹钟不能依赖房子,否则这个闹钟就不能放到别的

Java编程里的类和对象

像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了基本的认识.接下来我就来谈谈自己的看法,各位大神勿喷,新手小白敬上. 既然谈到类和对象,首先,我们要明确一个概念.那就是,什么叫类?什么是对象? 首先让我们来谈谈什么叫类.类是一个比较抽象的概念,如何给它定义,是一个难题.我们通常这样称呼它,模板.是的,它代表了具有相同属性.行为等的一种事物.就比如

php类与对象的基本概念

php面向对象设计 对象相比数组的优点:不仅可以存储多个数据,还可以将函数存在对象中 对象的三大特性:封装.继承.多态 面向对象编程(object oriented programming 即oop),其达到了编程代码的重用性.灵活性和扩展性更加简洁.容易维护.php又不是纯的面向对象编程,其也可以是面向过程编程. 1.面向对象和面向过程的区别? 面向过程:就是在整个项目中最小单位都是由函数组成的 面向对象:就是在整个项目中最小单位都是由对象组成的 2.什么是对象 对象,可以说世间万物都是.就是

Java:类与对象概念

什么是类? 怎样定义一个类? 什么是对象,类和对象之间是什么关系,怎样创建一个对象? 对象引用和对象在内存中是如何分配的? 什么是类? 1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象程序设计中,人们把一类事物的静态属性和动态可以执行的操作组合在一起就得到类这个概念. 2. 类是个抽象的概念,用来模拟一类事物,一旦定义了一个类,这个类就永远存在. 比如:人,人有男人和女人,他们都有身高,体重等相同的属性,他们都具有走路,吃饭,工作等这些相同的,可动态执行的操作,所以可以定义"人类&q

java基础-类与对象、

一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法.这是第二点.最后分析类和类之间具体有什么关系,这是第三点. 面向对象有一个非常重要的设计思维:合适的方法应该出现在合适的类里面. 二.简单理解面向对象 就是在程序里面首先分解出来的应该是注意不再是一步一步的过