没有合适的资源?快使用搜索试试~ 我知道了~
工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些。
资源详情
资源评论
资源推荐
Java 设计模式
一.java 模式之单例模式
java 模式之单例模式:
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提
供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户
丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。
而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
Singleton 模式主要作用是保证在 Java
应用程序中,一个类 Class 只有一个
实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。
一些资源管理器常常设计成单例模式。
外部资源:譬如每台计算机可以有若干个打印机,但只能有一个 Printer
Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个
通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求
同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存
放系统配置。这样的系统应当由一个对象来管理这些属性文件。
一个例子:Windows 回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,
而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。
两种形式:
1,饿汉式单例类
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是 private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本 class 的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
2,懒汉式单例类
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
第二中形式是 lazy initialization,也就是说第一次调用时初始 Singleton,以
后就不用再生成了。
注意到 lazy initialization 形式中的 synchronized,这个 synchronized 很
重要,如果没有 synchronized,那么使用 getInstance()是有可能得到多个
Singleton 实例。
一般来说第一种比较安全。
二.java 模式之 DAO 模式
什么是 DAO
DAO 是 Data Access Object 数据访问接口,数据访问:故名思义就是与数据库打交道。夹
在业务逻辑与数据库资源中间。
DAO 的功能:
1. DAO 用来封装 Data Source 的..就比如,Connection conn = DAOFacotry.createConnection()..
就可以把 Driver. URL. username, passpword 这一些放在 DAO 中
以后要更改数据库的类型.比如要把 MSSQL 换成 Oracle 的话..只需要更改 DAOFacory 里面
的 getConnection()里面的 Driver.URL.之类的..
2. DAO 也是把对数据库的操作(比如最基本的 CRUD 操作)全部封装在里面..
比如说你要你要插入一个新的用户..那么.在 DAO 中我们只需要提供一个 insertUser(User
user)这一个方法就可以了..具体的操作是在 DAO 中实现的...
那么对于要调用 DAO 的时候.我们只要知道 insertUser(User)是用来插入一个新的用户...而不
需要知道是如何实现的。
一般 DAO 是与 Abstract Factory 模式一起来用的...
Factory 来 建 立 数 据 库 和 定 位 具 体 的 DAO( 比 如 说 是 UserDao..CustomerDao..).. 一 般 将
getConnection 设 置 为 static.. 也 可 以 把 HibernateSessionFactory 这 一 个 公 共 类 放 在 这 一
AbstractFactory 类中去...
public class DAOFactory {
private static final SessionFactory sessionFacotory;
// 定义一个 TrheadLocal .
static Session currentSession().....
public UserDao getUserDAO() { return new UserDaoImpl(sesssion); }
pulbic OtherDao getOtherDAO() { return new OtherDaoImpl(session); }
......
}
public interface UserDao {
public insertUser(FormBean)
public updateUser(FormBean);
}
然后就实现 DAO 的接口: (Struts 的 FormBean...VO 来的..)
public class UserDaoImpl implements UserDao {
剩余14页未读,继续阅读
tianshuai32
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0