`

Java面向对象设计最佳实践 - 概述

 
阅读更多

根据笔者的经验,计划编写 Java 面向对象设计最佳实践” 专题,通过 用理论和实战的方法,试图介绍Java 面向对象设计,希望大家喜欢。本文是开章概述,由于经验和精力有限,欢迎大家指正和共同交流学习。


言归正传,Java 语言作为一门“ 全面 ”面向对象的编程语言,提供了面向对象的四种基本性质: 抽象性 封装性 继承性 多态性 。同时,不得不指出的是,这里的“全面”是狭义的,缘于Java 编程语言没有放弃面向过程语言的原生类型,并且有限性地支持 AOP (在 JDK API 层次,仅支持接口拦截)。综上所述,对于这种狭义的“全面”,在面向对象设计的时,尽量全面地考虑。


通常来说,软件设计质量的标注可以通过“ 高内聚- 低耦合 ”来衡量。内聚(Cohesion )是一个模块内部各成分之间相关联程度的度量 。而 耦合是对某元素与其它元素之间的连接、感知和依赖的量度。 在设计阶段,开发人员和系统架构师应该考虑。


通常地偏好“实现接口”,而非“继承类”。接口作为一种契约,规约了类与类或者模块和模块之间的通讯语义,而不关心具体实现。主要体现以下设计的原则,分别是: 易读性 易用性 扩张性 单一性 安全性 易测性 容错性。


易读性:简单地来说,容易阅读,方便理解。无论是面向实现(过程)编程,还是面向接口编程,如果把握好良好的名称设计和文档,都不难做到易读性。不过面向接口关注的是契约- 语义,而不是实现。因此尽量地利用面向接口。题外话, 不要过度迷信面向对象 务实大于花哨


易用性:在易读性的前提上,对象结构方便开发和维护。三分开发,七分维护。因此,在开发阶段应该为方便后期维护做好铺垫。


扩张性:也可以称为弹性(灵活性或者易变性),弹性的实现,可以利用编程语言的特性,比如Java 中的 接口编程 ( 多态和抽象 )和 泛型设计 Java5 以上支持)。


单一性:通常,一个类或者模块只做“份内”之事,增强内聚性,减少耦合。在政治制度上,“三权分立”很好地诠释了这种思想。在面向对象上,具体体现在, 结构单一 (系统架构角度), 职责单一 (需求角度), 行为单一 (实现角度), 依赖单一 (通讯角度)等。


安全性:隶属于非功能之一,是设计和开发人员较容易忽略的方面。主要分为,操作系统安全、应用程序安全和社会工程学安全(不是讨论的重点)。Java 编程语言,一般保证了操作系统安全(除非恶意修改安全沙箱),主要是落到应用程序安全。常见的应用程序安全性问题, 类型安全 (错误类型转换、动态合成类等)、 线程安全 (数据一致性和死锁等) 资源安全 (内存、外存和CPU 等资源) 数据安全 (数据封装、零时和持久数据、单一和分布式事务,通讯数据转换和丢失等)等


易测性:结构易于测试。在面向对象编程中,一般来说,方法作用于对象状态行为表现和控制,构造器则是对象状态初始设定。在测试中,良好的上下文设计至关重要,比如: 合理的参数数量和类型 参数职能单一 (参数类型和状态不要太复杂)、 参数依赖简单 (尽量不要依赖第三方API )和 易于构造 (或模拟)、 返回值明确并且规约 模块内部结构简单 。良好粒度的设计是便于测试的基础。同时,测试优先(TDD) 的方法可以重构模块。


容错性:一般的过程:错误事件产生,错误处理,现场(数据或者状态)恢复。目前,许多框架提供了统一便捷的错误(异常)处理方式,而大多数公司也有自己的处理流程。其目的是,对于少数系统界别和大多数应用级别错误(异常)发生,不影响系统整体运行,提高系统可用性和友好性。在JVM 应用程序中,主要是不中断主线程的运行。在设计时,可以考虑 分发式 (利用异步或者多线程)方法来处理错误(异常),恢复现场等。 容错性设计是非常苦难的,其原因是 正确运行通路是少数 ,而 异预测常情况是困难的 尤其在现场恢复体现 TDD开发模式和契约编程可以提升系统容错性

分享到:
评论
2 楼 mercyblitz 2010-04-19  
概述,可能抽象一点,不过后续文章比较具体。
1 楼 byandby 2010-04-19  
看着有点抽象啊 !!!!  这书是写给那类人看的?

相关推荐

    java学习书籍及建议.docx

    它详细介绍了Java编程中的有效实践和最佳实践,如何避免常见的错误和陷阱。 《深入理解Java虚拟机》:这本书是Java虚拟机编程的经典教材,适合中级和高级开发者。它详细介绍了Java虚拟机的原理和内部实现,以及如何...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

     国内知名的高端IT技术作家,已出版《Spring 2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。 目录: 第0章 学习Java...

    酒店管理系统源码下载java-pattern:设计模式代码

    酒店管理系统源码下载java [TOC] ##设计模式概述 设计模式是一套被反复...可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式

    asp.net知识库

    翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 Attributes in C# 手痒痒,也来个c# 2.0 object ...

    互联网程序员都每天刷题嘛-dave-cs:戴夫的计算机科学课程

    面向对象设计 数据库 线性代数 Linux、zsh、VM C Python Java Javascript/HTML/CSS Node.js + Express MySQL/SQLite 基本正则表达式 移动就绪 Web 应用程序设计 如何收集需求并编写设计文档 单元测试和集成测试 序列...

    JavaScript权威指南(第6版)(附源码)

    本书第6版涵盖了HTML5和ECMAScript5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合...

    worldwindjava源码-clean-architecture:罗伯特·马丁的《TheCleanArchitecture》笔记

    decomposition是我们的最佳实践之一 软件架构师努力定义易于证伪(可测试)的模块、组件和服务。 面向对象编程 封装、继承和多态可以在 C 中实现。 在多态之前,典型的调用树包含:主函数称为高级函数,称为中级函数...

    leetcode电脑下载-DemoDev:示例:技术、算法比较、面试编码问题、实用程序

    各种面向对象和函数式编码技术都用真实的例子来说明。 即用型实用程序作为库和可执行文件。 性能测试方法。 DevOps 示例。 面试问题。 其中一个子主题是一系列面试编码问题,以说明对 Java 编码技能的全行业评估。 ...

    JavaScript权威指南(第6版)(中文版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    JavaScript权威指南(第6版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    JavaScript权威指南(第6版)

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    JavaScript权威指南(第6版)中文文字版

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    JavaScript权威指南(第6版) 中文版

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    spring.net中文手册在线版

    Spring.NET AOP最佳实践 第二十七章. .NET Remoting快速入门 27.1.简介 27.2.Remoting实例程序 27.3.实现 27.4.运行程序 27.5.Remoting Schema 27.6.参考资源 第二十八章. Web框架快速入门 28.1.简介 第二十九章. ...

    低清版 大型门户网站是这样炼成的.pdf

    13.3 搜索引擎优化最佳实践 794 13.3.1 如何快速被搜索引擎收录 794 13.3.2 建立合理的网站结构与网站地图的应用 795 13.3.3 设计良好的网页结构 798 13.3.4 seo基本功——关键词的选用 800 13.3.5 域名与空间...

Global site tag (gtag.js) - Google Analytics