- 浏览: 140738 次
- 性别:
- 来自: 广州
最新评论
-
randyjiawenjie1:
终于遇到一个人讲清楚了
阻塞I/O,非阻塞I/O -
dxqrr:
学习了。。。。
java中堆和堆栈的区别 -
tanhong:
[color=yellow][/color] ...
“is a”和“has a”的区别 -
uuid198909:
代码看着是比较………………
JDK5新特性--java.util.concurrent Semaphore(8) -
heipark:
兄弟,咱这代码纠结了点....
JDK5新特性--java.util.concurrent Semaphore(8)
文章列表
当Java世界提供的可选择性框架平台越来越多时,我们可能被平台架构所深深困扰,而无暇顾及软件的真正核心:业务建模,其实,业务领域建模同样是一个比平台架构更复杂,更需要学习的新的领域。
相反,在实践中 ...
- 2008-06-25 17:14
- 浏览 2343
- 评论(0)
板桥里人
http://www.jdon.com
2006/12/6(转载请保留)
多变且复杂的需求
如果没有多变的需求,也许就没有今天的面向对象软件,我们曾经试图通过需求管理、需求跟踪等等管理方式约束和减少需求频繁更 ...
- 2008-06-25 16:26
- 浏览 979
- 评论(0)
我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。
编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计 ...
- 2008-06-25 15:45
- 浏览 862
- 评论(0)
最近用到了,所以依然是转载
ArrayList
和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动
等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要
差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些 ...
- 2008-06-24 11:18
- 浏览 1078
- 评论(0)
一、引子
这是一个很简单的模式,却被非常广泛的使用。之所以简单是因为在这个模式中仅仅使用到了继承关系。
继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。“使用委派关系代替继承关系”,“尽量使用接口实现而不是抽象类继承”等等专家警告,让我们这些菜鸟对继承“另眼相看”。
其实,继承还是有很多自身的优点所在。只是被大家滥用的似乎缺点更加明显了。合理的利用继承关系,还是能对你的系统设计
起到很好的作用的。而模板方法模式就是其中的一个使用范例。
二、定义与结构
GOF给模板方法(Template
Method)模式定义一个操作中的算法的骨架,而将一些步骤延迟 ...
- 2008-06-24 00:07
- 浏览 1165
- 评论(0)
关键字: uml 读书笔记
通俗地讲,用例是文本形式的情节描述,
用以说明某参与者使用系统以实现某些目标。
注意:用例不是图形,而是文本。
用例初学者的常见错误就是注重于次要的UML用例图,而 ...
- 2008-06-22 16:01
- 浏览 1990
- 评论(0)
关键字: uml 读书笔记
定义:需求
需求(Requirement)就是系统(更广义的说法是项目)必须提供的能力和必须遵从的条件[JBR99]
"Requirements
are capabilities and conditions to which the system—and more broadly, the project—must conform". [JBR99]
UP(Unified Process)提出了一系列的最佳实践,其中之一就是需求管理
(requirement management)。需求管理不主张采用瀑布的观点 ...
- 2008-06-21 11:01
- 浏览 1175
- 评论(0)
关键字: uml 读书笔记
初始阶段是建立项目共同设想和基本范围的比较简短的起始步骤。是为在随后的细化阶段能够开始编程,他将包括对10%的用例进行分析、关键的非功能性需求的分析、业务案例创建和开发环境的准备。
用一句话来概括初始阶段:
预见项目的范围、设想和业务案例。
用一句话来概括初始阶段要解决的主要问题:
涉众是否就项目设想基本达成一致、项目是否值得研究进行认真研究。
简单的来说,从未来新系统的总体目的和可行性而言,项目的初期只进行足以形成合理判断的调查。并能够确定是否值得继续深入研究即可。而深入研究是细化阶段的工作。
...
- 2008-06-21 10:15
- 浏览 1181
- 评论(0)
一,命令模式的实现:
命令模式里边一般都有以下几个角色:客户端,请求者,命令接口,命令实现,接受者,
下边是简单命令模式的实现代码实现:
1 public class Client{
2 public static void main(String[] args){
3 Receiver receiver = new Receiver();
4 Command commandOne = new ConcreteCommandOne(receiver);
5 Command commandTwo = new Concret ...
- 2008-06-19 22:26
- 浏览 1113
- 评论(0)
深入理解abstract class和inter abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了
Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很 ...
- 2008-06-15 00:27
- 浏览 861
- 评论(0)
ξ 3.1 软件系统的可维护性
☆ 导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化二“腐烂”的真正原因有四个:
① 过于僵硬
加入一个新性能,不仅仅意味着建造一个独立的模块,而且因为这个新性能会波及 ...
- 2008-06-14 14:24
- 浏览 1251
- 评论(0)
ξ 4.1 什么是开闭原则
☆ 开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for
extension, but closed for
modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被 ...
- 2008-06-14 13:38
- 浏览 1026
- 评论(0)
☆ 依赖倒转原则,要依赖于抽象,而不要依赖于具体实现。
ξ 8.3 依赖倒转原则
☆ 三种耦合关系
① 零耦合关系,如果两个类没有耦合关系,就称之为零耦合;
② 具体耦合,具体耦合发生在两个具体的类之间,经由一个类对另外一个具体类的直接引用造成的。
③ 抽象耦合关系,抽象耦合关系发生在一个具体类和一个抽象类之间,使用两个必须发生关系的类之间存在有最大的灵活性。
☆ 依赖倒转原则的另外一种表述是:
要针对接口编程,不要针对实现编程(Program to an interface, not an implementation)[GOF95]。同样,在处理类之间的耦合关系时,尽量使用抽象耦合的形式。
...
- 2008-06-14 13:15
- 浏览 1194
- 评论(0)
1.开—闭原则(Open-Closed Principle, short for OCP)
该原则讲一个软件实体应当对扩展开放,对修改关闭。说的是在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修
改源代码的情况下改变这个模块的行为。实现开闭原则的关键是抽象化。在"开—闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽
象类和接口在"开—闭"原则中扮演着极其重要的角色,在设计过程中既要预知可能变化的需求,又要预见所有可能已知的扩展。
2.里氏代换原则(LSP)
该原则严格表达为:如 ...
- 2008-06-14 13:02
- 浏览 2910
- 评论(0)
“is
a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用
Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。
“has a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
再比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字 ...
- 2008-06-14 12:53
- 浏览 1928
- 评论(2)