应用软件架构分为两层,分别是平台层和应用层。
平台层通常用于提供基础框架和大量可重用组件。
分需求、设计、实现和测试。
组件要设计成可重用、易于扩展和高性能的软件实体。
呵呵,高要求。搞了这么长时间,还没有在topcoder上认真玩过一回呢,要加油了
不经任何改造,可直接用于商业软件的优秀组件并不多。于是核心软件开发者时常要面对的一种尴尬局面:大量的开源软件,但是找不到满足自己要求的组件。
组件设计是软件设计开发最精髓所在,凝聚了面向对象、数据结构、设计模式、线程并发同步、网络通信、操作系统等诸多领域的核心技术,一直是设计开发领域彰显技术水准的高地。
作者在书中对核心能力划分了3个等级。说一个本科生毕业后,达到第一个层次至少需要2~3年,达到第二个层次至少需要3~4年,修炼到第三个层次,还需要2~3年。 呵呵,怎样做才能缩短这个漫长的修炼过程呢?
3个过程同时修炼,需要5年时间才可以涉足组件设计这个领域?
组件暴露出来给外界使用的接口,必须足够简单。
组件设计者不应该对组件将来的使用环境做任何假设。
最简单的组件,就是一个类。 高内聚,低耦合是设计原则。要尽量控制类的数量。理想的组件是一个类?
首先介绍的是一些高级Java设计技巧。
常用的工具类方法基本上都以static方式声明。
Java中的static和C++中的static是完全不同的。一个普通Java类用static修饰,会编译错误。而在C++中是可以这么做的。在C++中用static修饰类,则这个类中的所有成员变量和成员函数都是静态的,它们独立于对象而存在。
HashSet内部是用HashMap实现的。
HashMap在高性能的情况下被大量使用,它的缺点是内存占用较多。
Class类是非常值得重视的,通常用它来动态创建对象。
反射是在JDK1.5引入的,JDK1.4及以前的版本并不支持。
没有范型,使用顶层类Object也是可以的。但是取出值的时候,需要做 强制类型转换。
JDK1.5版本引入版本引入了范型概念来优雅地解决此类问题。
使用范型有一个好处:可以在编译时检查存储数据是否正确。
在接口上使用范型,可以大大增强接口的能力。
范型方法: public修饰符之后是<>,然后是函数返回值,接着是函数名、函数参数。当然,返回值也可以使范型的类型。
public <T> void printValue(T v) {}