《数据结构与抽象:Java语言描述(原书第4版)》一P.5 重用类

简介:

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第1章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

P.5 重用类

当你首次着手写程序时,很容易有这样的印象,即每个程序都是从零开始设计和编写的。相反,大多数软件是融合了已有组件与新组件而成的。这种机制节省了时间和经费。另外,已有的组件已经用过很多次了,所以更易测试且更可靠。
例如,公路模拟程序可能包含一个新的公路对象来建模新的公路设计,但它或许使用已在其他程序中设计的汽车类来建模汽车。当你标识出项目中所需的类时,应该看看这些类是否已存在。能不能使用它们,或者把它们当作新类的基类?
当设计新类时,应该设法保证它们在未来容易重用。必须准确说明类的对象如何与其他的对象进行交互。这是我们在本序言的第一段讨论的封装原则。但封装不是唯一要遵守的原则。设计类时还必须让对象通用,而不是专为某个程序量身定做的。例如,如果程序要求所有的模拟汽车只向前移动,那么你也应该让汽车类包含后退动作。其他的一些模拟可能要求汽车后退。
不可否认,你无法预知你的类在未来的所有用途。但你可以而且也应该避免这种依赖性,以免限制其日后的使用。第17章介绍设计类时始终将其未来的使用牢记在心。
利用本序言讨论的原则来设计一个带接口、可重用且有适用于javadoc注释的类,要花工夫。设计一个满足具体问题的方案花的时间更少。当你或其他程序员需要重用接口或类时,付出终有回报。如果你写那些组件时考虑了未来,那么它们的每次使用就会更快更容易。从长远来看真正的软件开发人员运用这些原则是省时的,因为节省时间即节省了金钱。你也应该利用它们。

相关文章
|
1天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
1天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
27 10
|
2天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
3天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
6天前
|
Java Android开发 C++
Kotlin vs Java:选择最佳语言进行安卓开发
【4月更文挑战第13天】Java曾是安卓开发的主流语言,但Kotlin的崛起改变了这一局面。Google在2017年支持Kotlin,引发两者优劣讨论。Java以其成熟稳定、强大生态和跨平台能力占优,但代码冗长、开发效率低和语言特性过时是短板。Kotlin则以简洁语法、空安全设计和高度兼容Java脱颖而出,但社区和生态系统仍在发展中,可能存在学习曲线和性能问题。选择语言应考虑项目需求、团队熟悉度、维护性、性能和生态系统。无论选择哪种,理解其差异并适应新技术至关重要。
|
7天前
|
Java API
编码的奇迹:Java 21引入有序集合,数据结构再进化
编码的奇迹:Java 21引入有序集合,数据结构再进化
14 0
|
7天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
7天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
11 0
|
9天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)