- 博客(28)
- 收藏
- 关注
《代码大全》读书笔记之一
What is Software Consturction定义问题 problem definition 需求分析 requirements planning 规划构建 construction planning 软件构架 software architecture ,高层设计 high-level design编码与调试 coding and debugging单元测试 unit...
2008-06-30 23:02:13 89
中断JAVA线程
在JAVA中,通过其对线程类的内嵌支持,编程人员编写多线程程序是很简易的。然而,在编程人员面前,多线程呈现出一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。 背景 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还...
2008-06-30 22:44:58 55
JAVA中断线程的方法
Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的! 现在,如果你要安全有效地终止一个线程,应该采用以下这些方法: 1,线程正常执行完毕,正常结束。也就是让run方法执行完毕,该线程就会正常结束。 2,监视某些条件,结束线程...
2008-06-30 11:26:50 84
浅谈“领域驱动设计”
作者:老王Eric Evans所著的《领域驱动设计》(Domain-DrivenDesign:通常简称为“DDD”)一书可以说是经典中的经典,虽然“领域”的概念早就存在,但是直到这本书的出现,才让人们真正开始认真审视软件的构建,相信你看了这本书后会真正体会领域的力量,也正是这个力量决定了软件最终的价值。领域的含义:简单的说,每个软件程序都会与其用户的活动或兴趣相关,其中使用程序的主要...
2008-06-25 17:52:11 77
当前Java软件开发中几种认识误区
越来越多人开始使用Java,但是他们大多数人没有做好足够的思想准备(没有接受OO思想体系相关培训),以致不能很好驾驭Java项目,甚至 导致开发后的Java系统性能缓慢甚至经常当机。很多人觉得这是Java复杂导致,其实根本原因在于:我们原先掌握的关于软件知识(OO方面)不是太贫乏就是不恰当,存在认识上和方法上的误区。软件的生命性 软件是有生命的...
2008-06-25 17:24:37 80
领域模型驱动设计(Evans DDD)之模型提炼
当Java世界提供的可选择性框架平台越来越多时,我们可能被平台架构所深深困扰,而无暇顾及软件的真正核心:业务建模,其实,业务领域建模同样是一个比平台架构更复杂,更需要学习的新的领域。 相反,在实践中,我们技术人员在经过冗长的平台架构学习和实践后,就匆忙开始项目开发,这时是什么指导他们进行软件业务实现呢?大部分可能是依赖数据库建模,甚至是复杂冗长的数据库存储过程设计,这些已经开始走向面向...
2008-06-25 17:14:13 135
面向对象与领域建模
板桥里人 http://www.jdon.com 2006/12/6(转载请保留) 多变且复杂的需求 如果没有多变的需求,也许就没有今天的面向对象软件,我们曾经试图通过需求管理、需求跟踪等等管理方式约束和减少需求频繁更新带给软件的冲击,可是这样下去的结果只有一个:使得软件更加僵化;或者程序员更加 劳...
2008-06-25 16:26:57 54
面向对象建模与数据库建模两种分析设计方法的比较
我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。 编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计上的好处,但是也存在一个奇怪的现象: 很多程序员虽然在使用OO语...
2008-06-25 15:45:34 102
ArrayList Vector LinkedList 区别与用法
最近用到了,所以依然是转载ArrayList和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向...
2008-06-24 11:18:21 72
深入浅出Java模式设计之模板方法模式
一、引子 这是一个很简单的模式,却被非常广泛的使用。之所以简单是因为在这个模式中仅仅使用到了继承关系。 继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。“使用委派关系代替继承关系”,“尽量使用接口实现而不是抽象类继承”等等专家警告,让我们这些菜鸟对继承“另眼相看”。 其实,继承还是有很多自身的优点所在。只是被大家滥用的似乎缺点更加明显了。合理的利用继承关系,还是能对...
2008-06-24 00:07:20 78
[读书笔记]UML和模式应用 ---- 用例
关键字: uml 读书笔记 通俗地讲,用例是文本形式的情节描述,用以说明某参与者使用系统以实现某些目标。 注意:用例不是图形,而是文本。用例初学者的常见错误就是注重于次要的UML用例图,而非重要的用例文本。 本质上,用例是通过编写使用系统实现用户目标的情节来发现和记录功能性需求,也就是使用的案例(cases of ...
2008-06-22 16:01:01 89
[读书笔记]UML和模式应用 ---- 进化式需求
关键字: uml 读书笔记定义:需求 需求(Requirement)就是系统(更广义的说法是项目)必须提供的能力和必须遵从的条件[JBR99]"Requirements are capabilities and conditions to which the system—and more broadly, the project—must conform". [JBR9...
2008-06-21 11:01:10 99
[读书笔记]UML和模式应用 ---- 初始不是需求阶段
关键字: uml 读书笔记初始阶段是建立项目共同设想和基本范围的比较简短的起始步骤。是为在随后的细化阶段能够开始编程,他将包括对10%的用例进行分析、关键的非功能性需求的分析、业务案例创建和开发环境的准备。 用一句话来概括初始阶段: 预见项目的范围、设想和业务案例。 用一句话来概括初始阶段要解决的主要问题: 涉众是否就项目设想基本达成一致、...
2008-06-21 10:15:22 85
Java中的模式 --- 命令模式
一,命令模式的实现:命令模式里边一般都有以下几个角色:客户端,请求者,命令接口,命令实现,接受者,下边是简单命令模式的实现代码实现: 1 public class Client{ 2 public static void main(String[] args){ 3 Receiver receiver = new Receiver(); 4 ...
2008-06-19 22:26:06 105
深入理解abstract class和interface
深入理解abstract class和inter abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和i...
2008-06-15 00:27:26 74
软件的可维护性和可复用性
ξ 3.1 软件系统的可维护性☆ 导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化二“腐烂”的真正原因有四个: ① 过于僵硬 加入一个新性能,不仅仅意味着建造一个独立的模块,而且因为这个新性能会波及很多其他的模块,最好变成跨越几个模块的改动。 ② 过于脆弱 对一个地方的修改,往往会导致看上去没什么关系的另外一个地方发生故障。尽管在修改之前,设计师会尽力预测可能的故障点,当是修...
2008-06-14 14:24:23 165
开闭原则
ξ 4.1 什么是开闭原则☆ 开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open forextension, but closed formodification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被扩展,换言之,应对可以不必修改源代码的情况下改变这个模块的行为。☆ 满足开闭原则的软...
2008-06-14 13:38:55 63
依赖倒转原则
☆ 依赖倒转原则,要依赖于抽象,而不要依赖于具体实现。ξ 8.3 依赖倒转原则☆ 三种耦合关系① 零耦合关系,如果两个类没有耦合关系,就称之为零耦合;② 具体耦合,具体耦合发生在两个具体的类之间,经由一个类对另外一个具体类的直接引用造成的。③ 抽象耦合关系,抽象耦合关系发生在一个具体类和一个抽象类之间,使用两个必须发生关系的类之间存在有最大的灵活性。☆ 依赖倒转原则的另外一种表述是:...
2008-06-14 13:15:32 62
java设计模式之设计原则
1.开—闭原则(Open-Closed Principle, short for OCP) 该原则讲一个软件实体应当对扩展开放,对修改关闭。说的是在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下改变这个模块的行为。实现开闭原则的关键是抽象化。在"开—闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接...
2008-06-14 13:02:30 92
“is a”和“has a”的区别
“isa”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。“has a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux...
2008-06-14 12:53:51 490
复用的基本种类
复用的基本种类:合成/聚合复用:优点:* 新对象存取成分对象的唯一方法是通过成分对象的接口。* 这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的。* 这种复用支持包装。* 这种复用所需的依赖较少。* 每一个新的类可以将焦点集中在一个任务上。* 这种复用可以在运行时间内动态进行,新对象可以动态的引用与成分对象类型相同的对象。缺点:* 系统中会有比较多的对象需要管...
2008-06-14 12:47:18 744
合成/聚合复用原则
☆ 合成/聚合复用原则经常又叫做合成复用原则。该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。ξ 10.1 合成与聚合的区别合成和聚合均是关联的特殊情况。聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强得多的“拥有”关系。在一个合成关系里面,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有...
2008-06-14 12:45:21 109
第五个设计模式:合成模式
第五个设计模式:合成模式合成模式把部分和整体关系用树结构表示,是属于对象的结构模式。合成模式要对组合的对象进行管理,所以在一定位置给予对象的相关管理方法,如:add(),remove()等.合成模式中对象的管理有两种方案。1.安全方式:此方式只允许树枝构件有对象的管理方法。2.透明方式:此方式只允许树枝和树叶都有对象的管理方法,但树叶对象中的管理方法无实际意义。一.UML...
2008-06-14 12:26:08 106
为什么说Java中继承是有害的(3)
这个代码成功编译,但是因为基类不知道关于stack指针堆栈的情况,这个stack对象当前在一个未定义的状态。下一个对于push()调用把新的项放入索引2的位置。(stack_pointer的当前值),所以stack有效地有三个元素-下边两个是垃圾。(Java的stack类正是有这个问题,不要用它). 对这个令人讨厌的继承的方法问题的解决办法是为Stack覆盖所有的ArrayList方...
2008-06-13 15:06:01 113
为什么说Java中继承是有害的(2)
作为另一个例子,比较下面两段代码: f(){ Collection c = new HashSet();//...g( c );}g( Collection c ){for( Iterator i = c.iterator(); i.hasNext() )do_something_with( i.next() );}和 f2(){ C...
2008-06-13 15:04:59 88
为什么说Java中继承是有害的(1)
原文:http://blog.csdn.net//softwarezhang/archive/2005/04/25/362832.aspx 大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系)。实际上80%的代码应该完全用interfaces写,而不是通过extends。“JAVA设计模式”一书详细阐述了怎样用接口继承代替实现继承。这篇文章描述设计者为什么会这么作。 ...
2008-06-13 15:04:17 107
Effective java学习笔记1:考虑使用静态工厂方法代替构造方法
我们要得到一个对象,马上想到构造方法,其实,静态工厂方法也可以替我们做到。例如,在jdk1.4里面,Boolean用了一个静态方法来得到一个boolean对象:public static Boolean valueOf(boolean b)question:这个方法实际上并不返回一个object?对的, sun的jdk 帮助里面讲: If a new Boolean instanc...
2008-06-12 21:52:00 119
java设计模式之工厂模式(简单工厂方法)
工厂模式总述 工厂模式属于类的创建模式,工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,而不必事先知道每次要实例化哪一个类。工厂模式有三个基本形态:1. 简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory MethodPattern)。2. 工厂方法(Factory Method)模式,又称多态性工厂(P...
2008-06-12 21:32:45 83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人