is-a && has-a && like-a
来源:互联网 发布:老男孩linux培训课件 编辑:程序博客网 时间:2024/05/23 16:16
转载自:http://blog.csdn.net/ooppookid/article/details/51174122
1、is-a,has-a,like-a是什么
在面向对象设计的领域里,有若干种设计思路,主要有如下三种:
is-a、has-a、like-a
2、is-a是什么
is-a,顾名思义,是一个,代表继承关系。
如果A is-a B,那么B就是A的父类。
一个类完全包含另一个类的所有属性及行为。
例如PC机是计算机,工作站也是计算机,PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。
3、has-a是什么
has-a,顾名思义,有一个,代表从属关系。
如果A has a B,那么B就是A的组成部分。
同一种类的对象,通过它们的属性的不同值来区别。
例如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
4、 like-a是什么
like-a,顾名思义,像一个,代表组合关系。
如果A like a B,那么B就是A的接口。
新类型有老类型的接口,但还包含其他函数,所以不能说它们完全相同。
例如一台手机可以说是一个微型计算机,但是手机的通讯功能显然不是计算机具备的行为,所以手机继承了计算机的特性,同时需要实现通讯功能,而通讯功能需要作为单独接口,而不是计算机的行为。
5、is-a,has-a,like-a如何应用
如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承。
如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类。
如果你确定两件对象之间是like-a的关系,那么此时你应该使用组合;比如空调继承于制冷机,但它同时有加热功能,那么你应该把让空调继承制冷机类,并实现加热接口。
- is-a, is-like-a, has-a
- is-a, is-like-a, has-a
- is-a && has-a && like-a
- 【java学习笔记】is-a、 has-a 、is-like-a、is-like-a
- java 面向对象关系is-a has-a like-a
- is-a has-a
- is-a&has-a
- C++ 设计模式中的is-a/has-a/like-a/use-a模式
- OOP编程之is-a、has-a和is-like-a之间的关系
- is-a、has-a和like-a、组合、聚合和继承 两组概念的区别
- is-a、has-a和like-a、组合、聚合和继承 两组概念的区别
- is-a VS has-a
- is-a And has-a
- is-a 与 has-a
- “is a” 和”has a“
- Is -A 与Has - A
- HAS-A和IS--A
- UML has a/ is a
- C#中使用系统剪切板
- 【推荐】微服务大型分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa
- 创建CubieBoard2交叉编译链
- iterator adapter reverse_iterator
- uva699 The Falling Leaves 二叉树
- is-a && has-a && like-a
- 【如何校验邮件地址的有效性】第一篇 :为什么要校验邮箱地址有效性?使用场景在哪里?
- 24.返回栈
- Linux环境下通过ODBC访问MSSql Server
- 第8章节_进程控制
- Java编程入门学习开发的20个必备技术点
- Error UNKNOWN_MEMBER_ID occurred while committing offsets for group ***
- binder 1 kernel开篇
- ubuntu 16.10 安装 openjdk 7