文章列表
一、前言 本文的目的是将一个获取数据库连接的普通类重构成DAO+Abstract Factory模式。 二、设计初衷 使用数据访问对象(DAO,Data Access Object)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便检索和存储数据。可以降低商业逻辑层和数据访问层的耦合度,提高应用的可维护性和可移植性。 由于底层数据源实现变化时,DAO向客户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。显然,DAO充当了组件和数据源之间的适配器。 三、重构 首先,创建一个获取数据库连接的普通类: ...
- 2008-11-15 19:50
- 浏览 1004
- 评论(1)
前几天一个网友指出了我的文章中一些有失偏颇之处,那些文章都是我在阅读Java Core的时候做的总结,顺便加上我个人的一些理解。因为看的e文版,理解上有些地方可能还欠妥。下面谈一下对Java中代理模式(Proxy)的认识。
代理,想必大家都应该知道是什么冬冬了,一般的手机产商都有代理商,歌星们都有自己的经纪人,如此这些都可以看作是一种代理模式。下面我选择如下的一种情景来进行讲述:某董事长出差,但是此时公司有个聚会,董事长买单,但是由他的秘书去结帐。我们就权且把这个看作一个代理行为,^_^。
首先我们定义一个接口:商人(Merchant),如下所示:
package cn.edu.hust.cm ...
- 2008-11-15 19:49
- 浏览 758
- 评论(0)
在一个类Class1中写一个事件event1, 当Class1中的某个值变化时,就触发event1,
然后写另外一个类Class2,监听Class1中的event1事件,
public class A{private Vector aListeners = new Vector();private int value;public int getValue(){return value;}public void setValue(int newValue){if(value!=newValue){value = newValue;AEvent evt= new AEvent(thi ...
- 2008-11-15 19:48
- 浏览 3565
- 评论(0)
登记式单例类
登记式单例类是GoF 为了克服饿汉式单例类及懒汉式单例类均不可继承的缺点而设计的。本书把他们的例子翻译为Java 语言,并将它自己实例化的方式从懒汉式改为饿汉式。只是它的子类实例化的方式只能是懒汉式的, 这是无法改变的。如下图所示是登记式单例类的一个例子,图中的关系线表明,此类已将自己实例化。
代码清单3:登记式单例类
import java.util.HashMap;public class RegSingleton { static private HashMap m_registry = new HashMap();static { RegSingleton ...
- 2008-11-15 19:47
- 浏览 872
- 评论(0)
作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点
单例单例
显然单例模式的要点有三个;一是某各类只能有一个实例;二是它必须自行创建这个事例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
资源管理
...
- 2008-11-15 19:45
- 浏览 870
- 评论(0)
事务处理是企业应用需要解决的最主要的问题之一。J2EE通过JTA提供了完整的事务管理能力,包括多个事务性资源的管理能力。但是大部分应用都是运行在单一的事务性资源之上(一个数据库),他们并不需要全局性的事务服务。本地事务服务已然足够(比如JDBC事务管理)。 本文并不讨论应该采用何种事务处理方式,主要目的是讨论如何更为优雅地设计事务服务。仅以JDBC事务处理为例。涉及到的DAO,Factory,Proxy,Decorator等模式概念,请阅读相关资料。 也许你听说过,事务处理应该做在service层,也许你也正这样做,但是否知道为什么这样做?为什么不放在DAO层做事务处理。显 ...
- 2008-11-15 19:42
- 浏览 759
- 评论(0)
一、 引言
迭代这个名词对于熟悉Java的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历:
Iterator it = list.iterator();while(it.hasNext()){ //using “it.next();”do some businesss logic}
而这就是关于迭代器模式应用很好的例子。
二、 定义与结构
迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
从定义可见, ...
- 2008-11-15 19:39
- 浏览 1143
- 评论(0)
我这里讲的不是怎么使用搜索引擎,而是怎么让程序利用搜索引擎来搜集网址,这有什么用?很有用!网上动辄有人叫卖网址数据库,如发布软件网址、邮件地址、论坛网址、行业网址,这些网址是怎么来的呢?不可能是人手工收集而来的,都是让程序利用搜索引擎取到的,如果您需要某类网址信息数据,就跟我来一起研究一下,非常简单。
本文采用Java语言写成,以google和百度搜索引擎为对象。
我们要利用google、百度搜索引擎的搜索规则中的两条,关键字搜索和inurl搜索。什么是inurl搜索,就是你所要搜索的网址中本身带有的关键字,比如www.xxx.com/post.asp ,这个网址就含有post.asp ...
- 2008-11-15 19:34
- 浏览 743
- 评论(0)
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中 ...
- 2008-11-05 18:25
- 浏览 574
- 评论(0)
Java语言中关键字strictfp的用途
自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下。
strictfp的意思是FP-stri ...
- 2008-10-31 22:46
- 浏览 738
- 评论(0)
无法查看源代码
- 博客分类:
- javascript
<html>
<head>
<script>
function clear() {
Source=document.body.firstChild.data;
document.open();
document.close();
document.body.innerHTML=Source;
}
</script>
</head>
<body onload=clear()>
现在在里面填充代码 你会发现无法查看到源代码
</body>
</html>
- 2008-10-30 17:13
- 浏览 926
- 评论(0)
[size=medium][/size]public ActionForward upLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
FileForm fileForm=(FileForm)form;
List<FileForm.myFile> files=fileForm.getImportFileList();
...
- 2008-10-30 10:09
- 浏览 741
- 评论(0)
实现SQL Server数据库的优化,首先要有一个好的数据库设计方案。在实际工作中,许多SQL Server方案往往是由于数据库设计得不好导致性能很差。实现良好的数据库设计必须考虑这些问题:
1. 逻辑数据库规范化问题
一般来说,逻 ...
- 2008-10-29 17:59
- 浏览 708
- 评论(0)
1、复制a.properties文件到比如D盘下
2、在我的电脑上配置环境变量:如下
我的电脑->属性->高级->环境变量->系统变量->新建->变量名:path;变量值:你的jdk安装路径例如:C:\Program Files\Java\jdk1.5.0_10\bin,然后确定即可;
3、打开命令行输入cmd,编辑Javac测试成功后,即可用一下方法得到你想要的结果:
在命令行里输入nativeascii d:\a.properties(源文件) d:\b.properties编译后的文件)
或者:
1、复制ApplicationResources.pr ...
- 2008-10-29 16:49
- 浏览 1697
- 评论(0)
典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库 ...
- 2008-10-29 16:37
- 浏览 881
- 评论(0)