根据笔者的经验,计划编写
“Java
面向对象设计最佳实践”
专题,通过
用理论和实战的方法,试图介绍Java
面向对象设计,希望大家喜欢。本文是开章概述,由于经验和精力有限,欢迎大家指正和共同交流学习。
言归正传,Java
语言作为一门“
全面
”面向对象的编程语言,提供了面向对象的四种基本性质:
抽象性
、
封装性
、
继承性
和
多态性
。同时,不得不指出的是,这里的“全面”是狭义的,缘于Java
编程语言没有放弃面向过程语言的原生类型,并且有限性地支持
AOP
(在
JDK
的
API
层次,仅支持接口拦截)。综上所述,对于这种狭义的“全面”,在面向对象设计的时,尽量全面地考虑。
通常来说,软件设计质量的标注可以通过“
高内聚-
低耦合
”来衡量。内聚(Cohesion
)是一个模块内部各成分之间相关联程度的度量
。而
耦合是对某元素与其它元素之间的连接、感知和依赖的量度。
在设计阶段,开发人员和系统架构师应该考虑。
通常地偏好“实现接口”,而非“继承类”。接口作为一种契约,规约了类与类或者模块和模块之间的通讯语义,而不关心具体实现。主要体现以下设计的原则,分别是:
易读性
、
易用性
、
扩张性
、
单一性
、
安全性
、
易测性
、
容错性。
易读性:简单地来说,容易阅读,方便理解。无论是面向实现(过程)编程,还是面向接口编程,如果把握好良好的名称设计和文档,都不难做到易读性。不过面向接口关注的是契约-
语义,而不是实现。因此尽量地利用面向接口。题外话,
不要过度迷信面向对象
,
务实大于花哨
。
易用性:在易读性的前提上,对象结构方便开发和维护。三分开发,七分维护。因此,在开发阶段应该为方便后期维护做好铺垫。
扩张性:也可以称为弹性(灵活性或者易变性),弹性的实现,可以利用编程语言的特性,比如Java
中的
接口编程
(
多态和抽象
)和
泛型设计
(Java5
以上支持)。
单一性:通常,一个类或者模块只做“份内”之事,增强内聚性,减少耦合。在政治制度上,“三权分立”很好地诠释了这种思想。在面向对象上,具体体现在,
结构单一
(系统架构角度),
职责单一
(需求角度),
行为单一
(实现角度),
依赖单一
(通讯角度)等。
安全性:隶属于非功能之一,是设计和开发人员较容易忽略的方面。主要分为,操作系统安全、应用程序安全和社会工程学安全(不是讨论的重点)。Java
编程语言,一般保证了操作系统安全(除非恶意修改安全沙箱),主要是落到应用程序安全。常见的应用程序安全性问题,
类型安全
(错误类型转换、动态合成类等)、
线程安全
(数据一致性和死锁等)
、
资源安全
(内存、外存和CPU
等资源)
,
数据安全
(数据封装、零时和持久数据、单一和分布式事务,通讯数据转换和丢失等)等
。
易测性:结构易于测试。在面向对象编程中,一般来说,方法作用于对象状态行为表现和控制,构造器则是对象状态初始设定。在测试中,良好的上下文设计至关重要,比如:
合理的参数数量和类型
、
参数职能单一
(参数类型和状态不要太复杂)、
参数依赖简单
(尽量不要依赖第三方API
)和
易于构造
(或模拟)、
返回值明确并且规约
、
模块内部结构简单
。良好粒度的设计是便于测试的基础。同时,测试优先(TDD)
的方法可以重构模块。
容错性:一般的过程:错误事件产生,错误处理,现场(数据或者状态)恢复。目前,许多框架提供了统一便捷的错误(异常)处理方式,而大多数公司也有自己的处理流程。其目的是,对于少数系统界别和大多数应用级别错误(异常)发生,不影响系统整体运行,提高系统可用性和友好性。在JVM
应用程序中,主要是不中断主线程的运行。在设计时,可以考虑
分发式
(利用异步或者多线程)方法来处理错误(异常),恢复现场等。
容错性设计是非常苦难的,其原因是
正确运行通路是少数
,而
异预测常情况是困难的
,
尤其在现场恢复体现
。
TDD开发模式和契约编程可以提升系统容错性
。
分享到:
相关推荐
5. **设计模式**:面向对象设计模式是解决特定问题的最佳实践,如单例模式、工厂模式、观察者模式等,这些模式在Java编程中广泛应用。 印旻的PPT将详细解释这些概念,并通过实例和练习帮助学习者理解和应用。通过...
设计模式是软件开发过程中经过大量实践和理论提炼出的解决方案模板,它们代表了在特定上下文中解决常见问题的最佳实践。设计模式并非具体的代码,而是描述在特定情境下,如何设计类和对象之间交互的一种通用语言。...
根据提供的文件内容,“Java面向对象程序设计语言课程设计指导书.pdf”这份文档可能是一份关于Java编程语言的实践课程设计教材。内容中提及了很多关于Java编程的重要知识点和概念,虽然内容显得有些混乱,部分文字...
- **案例分析**(15小时):通过分析具体项目的架构设计过程,学习最佳实践。 - **反向工程方法**(2小时):介绍如何从现有系统中提取架构信息。 - **项目过程监控**(1小时):使用挣值分析法等方法监控项目进度和...
除了基本的面向对象特性之外,设计模式也是Java面向对象编程的重要组成部分,它们提供了一系列解决常见问题的最佳实践。 1. **工厂模式**:用于创建对象,无需暴露创建逻辑,给客户端提供一个接口。 ```java ...
课程内容涵盖了JAVA的基础语法、面向对象编程、类库应用以及实际项目开发等多个方面。 【JAVA参考大全】 《JAVA参考大全》是该课程推荐的学习材料之一,不同于《Think in Java》这本书,它更注重实用性,对于初学...
综上所述,“Java语言程序设计-进阶篇第8版2011”这本书旨在为已经具备一定Java基础的读者提供更为深入的技术指导,帮助他们掌握更多高级特性和最佳实践,从而能够开发出更加健壮、高效的应用程序。
《Java虚拟机高级特性与最佳实践》是一本深入解析Java虚拟机(JVM)的权威著作,尤其在第二版中,作者对JVM的高级特性进行了详尽的阐述,并提供了丰富的最佳实践指导。这本书对于想要深入理解Java平台的开发者来说,...
《Java语言程序设计基础篇》是一本全面介绍Java编程基础知识的教材,由知名...通过学习这个教材,读者不仅可以掌握Java语言的基础知识,还能了解到实际开发中的常见技术和最佳实践,为今后的Java编程生涯打下坚实基础。
- **设计模式的定义**:设计模式是在软件设计过程中为解决特定问题而总结出来的最佳实践方案,是一种经过验证的解决方案。 ##### 2. 面向对象设计原则 - **单一职责原则**:一个类应该只有一个引起它变化的原因。 ...
### JAVA源码JAVA SMART系统-系统框架...通过深入学习其源代码和相关文档,不仅可以掌握Java语言及相关的开发框架和技术栈,还能了解到实际项目开发中的最佳实践和常见问题解决方案,为今后的职业发展奠定坚实的基础。
### 面向对象分析与设计 最经典图书 #### 核心知识点概览 本章节主要探讨了面向对象分析与设计(Object-Oriented Analysis and Design, OOAD)这一领域内的经典著作及其相关内容。OOAD是一种软件开发方法论,旨在...
- Java SE基础:理解面向对象编程的基本概念与语法。 - Java EE:包括Servlet、JSP等Web开发技术。 - Spring框架:提高开发效率,实现业务逻辑层解耦。 - MyBatis:ORM框架,用于数据库操作。 3. **数据库**: ...
#### 面向对象与设计模式概述 面向对象设计的核心在于将现实世界中的实体抽象为类,并通过类之间的继承和关联关系来构建应用程序。这种设计方式能够更好地模拟现实世界的复杂性,使得软件系统更易于理解和扩展。...
- **前沿技术**:本书介绍了一些最新的技术趋势和发展方向,包括但不限于面向对象编程、设计模式等。 - **实际应用**:通过具体的示例代码,展示了如何在Java项目中应用这些技术。 3. **编程技巧与最佳实践** - ...
总的来说,《Thinking in Java》不仅是一本全面介绍了Java语言的书籍,还是一本能够帮助读者深入理解面向对象编程思想的重要资料。无论是初学者还是有一定基础的Java开发者,都能从中获得宝贵的指导和启示。
整体而言,文件以系统的方式,详细地阐述了Java编程语言的核心概念、语法、设计模式和最佳实践。无论对于初学者还是有经验的开发者,这份文件都能提供有价值的参考和学习指导。通过理解和掌握这些知识点,读者可以...