首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式初探(一)之单态模式

2012-12-21 
设计模式初探(一)之单态模式其实很早就开始涉及设计模式的学习了,第一次就看那本Gof的设计模式,觉得云里雾

设计模式初探(一)之单态模式

其实很早就开始涉及设计模式的学习了,第一次就看那本Gof的设计模式,觉得云里雾里的,并且各种C++代码,不是很清楚其中的真谛,对于设计模式这块充满编程技巧和思想的领域,仅仅是知道了一个概念,不能熟练运用,这次对于第二次了解设计模式,是从java.io.*包中的的修饰模式开始的,我当初好奇,为什么io中的stream为什么要有那么多的类,诸如:BufferedInputStream buffer = new BufferedInputStream(new DateInputStream(new FileInputStream));这种繁杂的数据流创建语句,后来才慢慢知道其中运用到了修饰模式对不同的stream所需实现的功能加以实现,还有,例如在spring中获取会话工厂,context.buildSessioFactory(),对于不同的底层数据库连接,然后调用openSession(),具体数据库会话的实现完全被封装,这其中就用到了工厂模式。

?

其实,我还推荐一本书,《thingking in patterns》,虽然不是很完整,但是里面的练习对设计模式的学习很有帮助。

?

现在,介绍自我感觉最简单的模式-单态(singleton)

?? ? ? 单态模式的效果是创建一个在上下文中只有一个实例的对象,并且当它被持有引用的时候,其它请求改实例的操作会被阻挡,直到当前线程释放改实例,其实,单态模式还可用于控制实例对象的数量,只需在该类中持有指定数量的自身实例即可。

?? ? ? 单态的实现方式是:将构造器私有化,并且持有自身或者其它的引用。

?? ? ? 现在考虑到一个一个ConnectionPool,一个数据库的连接池只能有一个,并且封装一个PoolManager的实例进行连接的管理,下面是有关Connection的代码清单:

?

Connection conn = ConnectionPool.getConnection();conn.getId();

?java中的Arrays就是一个单态模式,大家可以去看看源码。。

热点排行