自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)

该三大原则应该算是OO的基础,很多OO设计原则和设计模式都是在此三大原则上面衍生发展而来。所以对于学习设计模式的人,了解这三大原则显然是非常必要的。 1.面向对象设计的第一原则:封装变化点。隔离变化点的好处在于,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。很多设计模式的意图中都明显地指出了其对问题的解决方案,学习设计模式的要点是发现其解决方案中封装的变化点。

2007-07-29 23:51:00 6522

原创 设计模式(六):Prototype模式

 Prototype模式被翻译为原型模式,这里我们看到了创建对象的另外一种方式。一般在程序中我们可以使用的对象创建方法有:1. 使用new关键字创建对象,这是最最普通的一种。2. 使用对象序列化(Serialize)创建对象3. 使用反射机制(Reflection)动态创建对象4. 使用clone(克隆)方式创建对象这里的Prototype模式用的就是第4种方法,它通过复制一个已经存在的对象实例来

2007-05-02 17:57:00 1184

原创 设计模式(五):Builder模式

Builder模式主要解决的问题是:分离复杂对象的构建过程(construction)和表示(representation),以使得相同的构建过程能够产生不同的表示。通常Builder模式会和Composite模式一起使用。图中:Builder是创建产品的抽象接口ConcreteBuilder是Builder的具体实现,由它负责构建或者组装产品。Director的职责就是控制对象创建过程,它接受一

2007-05-02 16:40:00 1350 1

原创 设计模式(四):Abstract Factory模式

Abstract Factory模式是对Factory Method模式的进一步演变。Factory Method所要解决的是new的问题。而Abstract Factory模式则试图为创建一系列产品提供统一的接口。当需要创建某一系列产品的时候,可以从抽象工厂中选择相应的系列创建一个具体的工厂类。OK,我们现在就来假设一个场景,比如需要一个GUI(图形用户界面),它既可以显示Windows风格的按

2007-05-02 14:14:00 1212

原创 设计模式(三):Factory Method模式

在GOF中关于Factory Method模式的定义如下:“Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.” 定义创建

2007-04-19 14:06:00 1275 2

原创 设计模式(二):MonoState模式

MonoState模式:先说说MonoState这个单词的意思,设计模式的名字都是很有意思的,因为为了方便交流、记忆,所以设计模式的命名都对该模式的意图进行了表述。Mono是一个词根,英语中Mono,Mon都表示的是1的意思,state意思为"状态"。MonoState的意思就是"单一的状态"。MonoState模式同Singleton一样也是一种保证单一性的模式。但是它和Singleto

2006-12-19 16:42:00 7575 1

原创 设计模式(一):Singleton模式

Singleton模式: 意图:保证类有且仅有一个实例对象,并提供对它的全局访问点。 实现:1.  为了实现以上的意图,首先要绕过常规的实例化对象的手法,即通过new直接实例化对象。因为new的方式在“特殊”时候存在两个缺点:第一个很明显,直接new的方式具有较高的耦合性,缺乏相应的灵活度;第二个缺点,类实例化的主动权被客户端程序掌握,而不为类自身所能控制。也就是说,要确保一个

2006-12-18 14:11:00 1665 1

原创 静态工厂方法

它只是一个简单的静态方法,返回类的一个实例.1. 与构造函数不同,静态工厂方法具有名字.选用适当名字的静态工厂方法可以使一个类更易于使用,并且相应的客户代码更易于阅读.2. 与构造函数不同,不要求非得创建一个新的对象.这使得一些非可变类可以使用一个预先构造好的实例,或者把已经构造好的实例缓冲起来.同时,静态工厂方法可以为重复的调用返回同一个对象,这也可以被用来控制"在某一时刻哪些实例应该存在." 

2006-09-05 11:29:00 2242

翻译 在RMI中应用Factory模式

什么是"factory"?为什么要使用它?在这里,factory是指实现了factory设计模式的软件逻辑.通常在需要使用一个对象来控制其它对象的创建或存取过程的时候将非常有用.在RMI中使用factory,能够降低在RMI注册表中注册对象的数量.真实世界的factory示例:银行当你前往银行往自己的账户存钱的时候,你并不会径直走到金库,然后打开写有你名字的抽屉,然后把钱放进去,再关上抽屉离开.仔

2006-09-04 21:23:00 1115

原创 关于敏捷软件开发

最近在看,对其中的原则和实践非常感兴趣.顺便记录下来....1. 敏捷软件开发宣言 个体和交互          胜过   过程和工具 可以工作的软件  胜过   面面俱到的文档 客户合作              胜过   合同谈判 响应变化              胜过   遵循计划2. 12个原则:  2.1 我们最优先要做的是通过尽早的,持续的交付有价值的软件来使客户满意  2.

2006-09-03 20:15:00 2014 2

原创 开闭原则(Open-Closed Principle)与Strategy模式

"开闭原则":"开闭原则"是一种与类设计相关的原则."软件实体(类,模块,函数等)应该对扩展开放,而对修改关闭[Martin,p99]"."开闭原则"有两个重要的方面:1. "对扩展开放": 当应用程序的需求发生改变,可以通过扩展模块的行为来应对.2. "对修改关闭": 扩展模块的行为并不会导致模块的源代码或它的二进制代码的修改.在应用程序中有两种设计模式可以帮助实现"开闭原则": Templat

2006-09-01 20:38:00 1622

原创 [java] "Hello"和new String("Hello")产生String对象的区别

问题在于看了的实践 31:如欲进行字符串接合,StringBuffer优于String.其中使用new String("...")形式产生的bytecode中显示产生了两个String对象!做了以下实验:比较Test.java和Test1.java两者之间的bytecode.package com.my;public class Test { public static void

2006-07-21 11:44:00 1747 1

原创 近期关于“软件架构”的一个看点

Peter Eeles准备写一系列的关于软件架构的文章,这个消息我是从www.artima.com上看来的。因为Bill Venners写了一篇文章叫做Software Architecture is Leadership,地址:http://www.artima.com/weblogs/viewpost.jsp?thread=154933里面提到他对于Peter Eeles写的What is a

2006-06-26 21:16:00 1392

原创 OOD原则:SRP、OCP以及LSP

单一职责原则(SRP : Single Response Principle)就一个类而言,应该仅有一个引起它变化的原因。在这里,职责的定义是: “变化的原因”。对于何时遵循SRP有以下的考虑:1.如果应用程序的变化会影响到类中某一种职责,那么就应该将它与另一种职责分开,这样做可以避免客户应用程序和类中的这两职责耦合在一起。2.如果应用程序的变化总是会导致两个职责同时变化,那么就不必要分离它们

2006-05-22 17:43:00 2108

翻译 第七课 使用存储过程(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 07: Using Stored Procedures第7课,使用存储过程这节课展示了在数据存取代码中如何使用存储过程。以下是本节课的目标: 学习如何通过使用存储过程修改SqlCommand对象

2006-02-14 20:11:00 2650 4

翻译 第六课 向命令中添加参数(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 06: Adding Parameters to Commands第6课:向命令中添加参数这节课介绍了如何在命令中使用参数,下面是本节课的目标: 了解parameter参数是什么 理

2006-02-14 20:10:00 2313

翻译 第五课 使用断开数据--DataSet和SqlDataAdapter(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 05: Working with Disconnected Data - The DataSet and SqlDataAdapter第五课:使用断开数据--DataSet和SqlDataAdapter这节课解释如何使用断

2006-02-14 19:57:00 2941

翻译 第四课 使用SqlDataReader读取数据(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 04: Reading Data with the SqlDataReader使用SqlDataReader读取数据本课解释了如何使用SqlDataReader对象读取数据。以下是本课的目标:

2006-02-14 19:55:00 5320

翻译 第三课 SqlCommand对象(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 03: The SqlCommand ObjectSqlCommand对象这节课描述了SqlCommand对象以及如何使用它与数据库交互。下面是本课的目标: 知道什么是command对象 学习

2006-02-14 19:54:00 2270

翻译 第二课 SqlConnection对象(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 02: The SqlConnection Object这节课描述了SqlConnection对象,和如何连接数据库。以下是本课目标 知道连接对象用来干什么 学习如何初始化SqlConn

2006-02-14 19:52:00 3543 1

翻译 第一课 ADO.NET简介(翻译)

本文档由李欣蔚(nirvana_li)翻译自http://www.csharp-station.com/,转载请注名出处!更新日期2006-2-14Lesson 01: Introduction to ADO.NET 了解什么是ADO.NET 理解什么是data provider 理解什么是connection对象 理解什么是command对象

2006-02-14 19:50:00 2860

翻译 编码之道【翻译】

编码之道2005-12-30 李欣蔚 翻译引入 这篇文章记述了我多年开发所使用的编码风格.我的风格并不具有广泛性.事实上,我不知道还有谁和我编码的怪异风格相近.但是我喜欢它并且想和你们分享(你们真是幸运的家伙!).我在所有语言都使用它,包括:C,C++,JAVA,C#,Python,…如果你想马上快速地浏览一下此种风格,翻到本页底部,看看源代码到底是如何用我的deWit

2005-12-30 09:10:00 1613

原创 John Vlissides逝世!

斯人长逝……

2005-11-29 20:23:00 1227

原创 C#学习笔记一--C#中的参数传递

By nirvana_li 2005-8-26摘要:由于在.NET中存在两种类型,分别是值类型(value type)和引用类型(reference type),所以很多关于C#中参数传递的混淆就因此而生。本文首先从值类型和引用类型的辨析入手,然后解释了在C#中的参数传递的四种形式:值传递(默认形式)、ref传递、out传递、params传递。 首先要弄清楚的是:值类型是分

2005-08-25 19:41:00 4056 4

转载 Visual Studio .NET学习之路

转载『Visual Studio .NET 学习之路』 Posted by i-Freelancer on 2003年8月15日 (台) 由弈飞信息首席顾问/台湾微软特约资深讲师 李 清 培 先生带领大家迈向.NET学习之路。 离线阅读档案,可至『在线资源 > 技术文章』处下载。      Visual Studio .NET 学习之路弈飞信息首席顾问 / 台湾微软特约资深

2005-08-05 15:37:00 3145

原创 JavaChina(2005年9月13-14日)

还有两个多月的时间Java 2005中国开发者大会——JavaChina就要开始了。值得期待!

2005-07-06 07:40:00 1291

原创 Eclipse Release Build: 3.1正式发布! ——PDE新特性

这是关于PDE插件开发的新特性,继续……为插件绑定manifest.mf:Eclipse3.1强烈推荐在插件中包含一个OSGi绑定manifest.mf文件。除了提高启动速度和装载类的速度,这种格式还能够体现新的运行时功能,比如对客户端使用包的良好控制。创建manifest.mf的选项在New Plug-in Project creation 向导中:在插件manifest编辑器的OverView

2005-06-30 23:09:00 1862

原创 Eclipse Release Build: 3.1正式发布! ——JDT新特性(二)

继续……使用多个项目组织工作区:在Package Explorer的视图按钮中使用 Show > Working Sets 启用将工作集作为顶层元素显示的模式。这种方式使管理包含多个工程的工作区更加容易。从 Package Explorer的视图菜单中选择Select Working Sets 配置如何显示工作集。通过此对话框能够创建新的工作集,定义显示什么工作集和以怎样的顺序显示工作集。工作集能

2005-06-30 20:52:00 1477

原创 Eclipse Release Build: 3.1正式发布! ——JDT新特性(一)

关注Eclipse3.1中的JDT新特性……J2SE5.0:Eclipse3.1完全支持J2SE5.0中所有新特性。在J2SE1.4中所包括的:编辑、代码辅助、编译、调试、快速修改(quick fix)、重构(refactory)、源代码动作()、查找等等都无缝地与J2SE5.0的新类型和语法兼容。这是一些例子:    1.Quick Fix更新到与J2SE5.0兼容的JRE和编译器。    2.

2005-06-30 18:09:00 1495

原创 Eclipse Release Build: 3.1正式发布! ——平台新特性(三)

继续……SWT现在是单独可以下载的Eclipse项目:对于单独的SWT应用程序开发者,SWT组件现在是可以单独下载的。在Eclipse3.1中SWT下载现在能够非常简单的作为项目导入到工作区中。     1.为单独的应用程序下载SWT。单独版本的SWT现在在Eclipse SDK下载页面上面也能找到:标题为SWT Binary and Source。无需解压,只需保存。     2.从File按钮

2005-06-30 16:06:00 1304

原创 Eclipse Release Build: 3.1正式发布! ——平台新特性(二)

继续关注eclipse3.1中平台新特性,上一篇文章《Eclipse Release Build: 3.1正式发布!document.title="Eclipse Release Build: 3.1正式发布! - "+document.title 》请参见http://blog.csdn.net/nirvana_li/archive/2005/06/30/408307.aspx查看所有快

2005-06-30 11:45:00 2044

原创 Eclipse Release Build: 3.1正式发布!——平台新特性(一)

2005年6月28日,Eclipse3.1正式发布!参看:http://www.eclipse.org/downloads/index.php平台新特性:显著的性能提升:Eclipse3.1比Eclipse3.0在性能上有了显著的提高。还增加了调试支持从而能够在工作台(workbench)运行的同时监视性能状况。见下图:支持双向(bi-directional)文本:对双向语言(BIDI)的支持已经

2005-06-30 10:18:00 3324

原创 软件工程箴言

软件工程箴言收集:Tom Van Vleck中文翻译:nirvana_li原网址http://www.multicians.org/thvv/proverbs.html绘图:Angus MacdonaldA clever person solves a problem.A wise person avoids it. -- Einstein 聪明的人解决问题。 理智的人避免问题 -爱因斯坦 ———

2005-06-29 18:13:00 1916

原创 Eclipse3.1中的新特性

偶今天在eclipse.sys-con.com上看到了一篇文章《Whats New in Eclipse 3.1》,地址:http://eclipse.sys-con.com/read/99729_1.htm作者: Ed Burnette发表日期:六月 13, 2005 10:00 AM 该文主要介绍了即将于六月底发布的Eclipse 3.1 lastest release的一些新特性。到Ecl

2005-06-27 17:16:00 2432 4

原创 Eclipse学习6-使用CVS进行团队开发(上)

1.  下载CVSNT并安装下载地址:http://www.cvsnt.org.最新的版本为cvsnt-2.5.01.1976,直接安装。 2.  配置CVSNT首先,我使用的环境是winxp,eclipse 3.0.2。在“开始”菜单的“所有程序”中打开CVSNT control panel:选择Repositories:看到的server就是服务器名,下面的就是repository。我在这个地

2005-05-30 20:51:00 4197 5

原创 Eclipse学习5-在Eclipse中编写Code的常用快捷方式

Eclipse学习5  一、创建新的方法  Eclipse中创建新的方法非常简单。通过使用Eclipse中的Code assist(代码帮助)可以轻松地创建新的方法。比如要创建一个新的private方法:我们可以先输入关键字private,然后使用快捷键ctrl – space(空格键)来使用Code assist。【注意:如果在输入法中用到了快捷键ctrl-space来切换中英文输入法话,请将输

2005-05-07 16:49:00 5917

原创 Eclipse学习4-在Eclipse中使用JUnit进行单元测试(下)

使用JUnit测试一个应用程序现在已经准备好测试JN_test应用程序。为了测试,还需要使用JUnit Wizard创建一个新的class来扩展JUnit测试用例。要使用此wizard,请在Package Explorer 中的JN_test上单击右键,并且选择New->Other来打开一个New对话框,如图所示:现在展开Java结点并选择JUnit,然后再选择JUnit Test Case,单击

2005-04-17 17:42:00 1963

原创 Eclipse学习4-在Eclipse中使用JUnit进行单元测试(上)

使用JUnit进行测试JUnit是与Eclipse一起提供的一个开源测试框架。在同一个Project中,可以创建与其它class无异的“基于JUnit”的class,并使用此JUnit代码去测试project中的其它class。JUnit的此种使用方式能够为每位在此应用程序上工作的人员构建一组标准的测试。如果当更改了应用程序代码以后,他们所需做的工作仅仅是点击几下按钮来验证此应用程序是否依然能够通

2005-04-17 16:23:00 2540

原创 2005 JDJ Readers' Choice Awards - Best Java Book Nominees:

2005 JDJ Readers Choice Awards - Best Java Book Nominees:Enterprise Java Programming with IBM WebSphere Second Edition (IBM Press); Building Websites with OpenCms (Packt Publishing);  Core Java 2, Vo

2005-03-26 14:31:00 1579 1

原创 原来Eclipse3.0.1中的jboss32x.server文件不匹配JBoss3.2.6!郁闷~

从今天下午开始就一直在Eclipse中配置JBoss,由于原来用的是JBoss3.0.0,现在想用JBoss3.2.6。于是就重新配置。但是配置好了以后,却发现会报告jar文件路径出错,一共有两个:一个是jboss-3.2.6/lib/jboss-boot.jar找不到,一个是jboss-3.2.6/server/default/lib/javax-servlet.jar找不到。用UE32打开ec

2005-03-20 23:34:00 1291

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除