这一章节我们来聊一下在聚合与继承之间选择的问题。
在我们平常的编码里面,使用聚合或者继承都可以,或者两者可以混合使用也行,这个时候就需要做出抉择,因为代码以后还需要维护,怎么才能达到维护简单?代码可读?。。。
因此,我们必须在各种方案中做出抉择。
笔者是这样认为的:
如果新的类只是使用老的类的一部分功能,那么就是用聚合,直接new出来就可以了,满足need或者组合这个关系;
如果新的类必须是老的类的一个特殊例子,那么就是用继承,满足is-a或者is-like-a这种关系
例子:
车是交通工具。
代码:
/**
*
*/
package com.ray.ch05;
/**
* @Package:com.ray.ch05
*
* @TODO 测试
*
* @date 2015 10 30
*
* @time 11:42:19
*
* @author JMSCADMIN
*
* @version 1.0
*/
public class Test {
}
class Vehicle {
}
class Car extends Vehicle {
}
class BMW extends Car {
}
车满足is-a交通工具这个关系,BMW满足is-a车这种关系
车是由轮子、车门等组合成的。
/**
*
*/
package com.ray.ch05;
/**
* @Package:com.ray.ch05
*
* @TODO 测试
*
* @date 2015 10 30
*
* @time 11:42:19
*
* @author JMSCADMIN
*
* @version 1.0
*/
public class Test {
}
class Door {
}
class Wheel {
}
class Car {
private Door leftDoor;
private Door rightDoor;
private Wheel leftForwardWheel;
private Wheel leftBackwardWheel;
private Wheel rightForwardWheel;
private Wheel rightBackwardWheel;
}
车和轮子、门等满足车是由xxx组成的这种关系。
总结:这一章节简单讨论了如何在聚合与继承之间选择。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的...
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
app-datepicker, 使用聚合物从头开始构建的元件 应用程序 datepicker ( 以前为 jv-datepicker ) 有关详细信息,请参阅组件页 。一个自定义的聚合物元素,从头开始提供一个基于谷歌设计的更具吸引力和丰富性的。实时...
从头开始学习Java课程-资料来源PillsInformática。
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
中文名: JAVA WEB服务 构建与运行 原名: Java Web Services:Up and Running 作者: Martin Kalin译者: 任增刚图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: O'Reilly书号: ISBN: 9787121097119发行时间: 2009年...
Java多线程与线程安全实践-基于Http协议的断点续传.rar 是一个Java毕业设计项目,旨在探讨如何在Java中实现多线程下载和断点续传功能,同时确保线程安全。该项目的主要特点如下: 1. 多线程下载:项目采用了Java的...
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
赖世雄英语从头学 下载-附件资源
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
Java机器人 这是一个从头开始编写JavaScript机器人