Java组件设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 组件设计原则

Java阵营一直倡导开源,开源运动如火如荼展开,催生了无数组件。但是,坦率地讲,这些开源的组件中,能够直接拿过来,不做任何改造,就能用于商业软件的构建,满足功能和性能的要求,这样的优秀组件并不多见。因此,核心软件开发者时常面对的尴尬局面是:大量的开源资源,都不满足我的要求。

实际上,组件设计是软件设计开发最精髓所在,凝聚了面向对象、数据结构、设计模式、线程并发同步、网络通信、操作系统等诸多领域的最核心技术,一直是设计开发领域彰显技术水准的最高领地。

一个组件,要想被广泛重用,满足不同系统的使用要求,就要求组件有足够的能力适应不同的应用场合,提供满足需要的功能,并表现出优秀的性能。因此,组件设计过程中,组件设计者要考虑的问题非常广泛而复杂,组件设计者需要具备的知识、技能和经验要求非常高,主要包括如下三个层次的核心能力。

(1)第一层次:编程能力。主要包括:

● 编程语言的熟练使用;

● 数据结构的精准运用;

● 多线程并发、同步的准确理解和实现;

● Socket网络编程技术的全面掌握和运用;

● 数据库概念的精准理解和熟练应用。

(2)第二个层次:设计能力。主要包括:

● 面向对象思想的精准理解和正确应用;

● 设计模式的精准理解和正确应用;

● 优秀的框架、中间件、数据库的深入洞悉和优化能力;

● 数据备份、安全、可维护性等方面的技术知识掌握;

● 设计方案的分析、比较、权衡和抉择。

(3)第三个层次:需求分析能力。主要包括:

● 对客户明确的功能需求进行分析的能力;

● 对客户明确的性能、数据备份、安全、可维护性等方面需求进行分析的能力;

● 推理、提取、归纳客户隐性需求的能力;

● 对需求方案进行分析、比较、权衡和抉择的能力。

每个层次的完成标准,是对本层次内的产出物,可以精确地阐述,为什么一定要这样,而不能采用别的方案或实现的理由。比如,在第二个层次——设计阶段,必须要能精确地说出:这样设计软件的依据在哪里,而且为什么一定要这样设计,而不能用其他的方案呢;这种设计方案与别的设计方案相比较时优势在哪里,不足在哪里;选择这种设计方案的理由在哪里。在深厚的技术和经验积累的基础上,能够横向的对各种方案进行深入的优缺点分析、比较、权衡和抉择,是相应阶段修炼完成的重要标志。

对一个本科毕业生来说,走上工作岗位后,在项目实战中进行学习和积累,到达第一个层次,至少需要2~3年的时间。修炼第二个层次,还需要3~4年的时间。修炼第三个层次,还需要2~3年的时间。

考虑实际工作中,一个软件开发人员经常在一个项目开发过程中,对以上三个层次的相关活动都会参与,相当于三个层次同时进行修炼,因此通常工作经验至少在5年以上才有可能涉足组件设计这个领域。另外,逐步地完善和全面提升,日臻精纯,需要天赋、勤奋、深入的思考和岁月的积累。这也就是,为什么在软件领域,组件到处泛滥,但优秀组件却不多的原因所在。

本章将对组件设计过程中要考虑的核心要素、设计中要遵循的核心原则进行总体阐述,使读者能从总体上掌握如何发现、评判、设计一个优秀的组件。

本章将对目前业界存在的诸多技术争论、误区进行澄清,让读者从所谓的“业界潮流”、教条、“黄金定律”中走出来,真正理解组件设计过程的核心原则。这些核心原则如下:

原则一:精准地解决共性问题

原则二:无配置文件

原则三:与使用者概念一致

原则四:业务无关的中立性

原则五:对使用环境无依赖

原则六:单类设计和实现

下面来详细讲解每个核心原则。