登陆注册
8183300000052

第52章 3 单体模式的实现

小A:“师兄,单体模式的实现要怎么去实现?”

大B:“1、提供唯一的私有构造器,避免多个单体(Singleton)对象被创建,这也意味着该单体类不能有子类,那声明你的单例类为final是一个好主意,这样意图明确,并且让编译器去使用一些性能优化选项。如果有子类的话使用protected,protected的构造方法可以被其子类以及在同一个包中的其它类调用。私有构造器可以防止客户程序员通过除由我们提供的方法之外的任意方式来创建一个实例,如果不把构造器声明为private或protected,编译器会自动的创建一个public的构造函数。2、使用静态域(static field)来维护实例。将单体对象作为单体类的一个静态域实例化。使用保存唯一实例的static变量,其类型就是单例类型本身。需要的话使用final,使其不能够被重载。”

例如:private static Rutime currentRuntime=new Runtime();

大B:“3、使用静态方法(Static Method)来监视实例的创建。”

(1)加载时实例化

例如:

public class Singleton{

private static final Singleton Singletoninstance=new Singleton();

private Singleton(){

}

public static synchronized Singleton getInstance(){

return Singletoninstance;

}

}

public class Singleton{

private static final Singleton?Singletoninstance=new Singleton();

private Singleton(){

}

public static synchronized Singleton getInstance(){

return Singletoninstance;

}

}

(2)使用时实例化(惰性初始化):这样做可以在运行时收集需要的信息来实例化单体对象,确保实例只有在需要时才被建立出来。

例如:

public class Singleton{

private static final Singleton Singletoninstance=null;

private Singleton(){

//使用运行时收集到的需要的信息,进行属性的初始化等操作。

}

public static synchronized Singleton getInstance(){

if(Singletoninstance……null){

Singletoninstance=new Singleton();

}

return Singletoninstance;

}

}

public class Singleton{

private static final Singleton Singletoninstance=null;

private Singleton(){

//使用运行时收集到的需要的信息,进行属性的初始化等操作。

}

public static synchronized Singleton getInstance(){

if(Singletoninstance……null){

Singletoninstance=new Singleton();

}

return Singletoninstance;

}

}

大B:“4、单体对象的成员变量(属性):即单体对象的状态通过单例对象的初始化来实现成员变量的初始化。通过方法对单体对象的成员变量进行更新操作。”

例如:

public class Singleton{

private static final Singleton Singletoninstance=null;

private Vector properties=null;

protected Singleton(){

//使用运行时收集到的需要的信息,进行属性的初始化等操作。

}

private static synchronized void syncInit(){

if(Singletoninstance……null){

Singletoninstance=new Singleton();

}

}

public static Singleton getInstance(){

if(Singletoninstance……null){

syncInit();

}

return Singletoninstance;

}

public synchronized void updateProperties(){

//更新属性的操作。

}

public Vector getProperties(){

return properties;

}

}

public class Singleton{

private static final Singleton Singletoninstance=null;

private Vector properties=null;

protected Singleton(){

//使用运行时收集到的需要的信息,进行属性的初始化等操作。

}

private static synchronized void syncInit(){

if(Singletoninstance……null){

Singletoninstance=new Singleton();

}

}

public static Singleton getInstance(){

if(Singletoninstance……null){

syncInit();

}

return Singletoninstance;

}

public synchronized void updateProperties(){

//更新属性的操作。

}

public Vector getProperties(){

return properties;

}

}

同类推荐
  • 如何选购电脑

    如何选购电脑

    本书以问答的形式介绍了选购电脑的基本知识。内容包括:电脑的组成、选购电脑的技巧、主机的部件构成、主板的主要类型、CPU的性能指标等。
  • 中国网络传播研究2009(第三辑)

    中国网络传播研究2009(第三辑)

    本文以传统社区研究的“场域论”为基础,探讨网络传播中场域性互动对社会舆论的影响。文章首先从传统社区传播的场域性特征出发,探讨网络传播的社区性和场域性。然后分别分析了传统门户、BBS论坛和私人博客等三种主流的网络传播的场域性互动、意见表达和舆论形成的特点。最后结合“张殊凡事件”、“王石捐款”事件以及“黑砖窑”事件,探讨网络传播中的场域性互动对社会舆论从虚拟到现实的影响。
  • 三维动画审美谈

    三维动画审美谈

    数字时代,美的标准充满更多的不确定性。而三维动画以数字图像形式成为这个图时代的代表。三维动画及三维图像不仅仅是由于应用了仿真数字图像技术而带来的虚拟空间,还有更多的是由三维图像技术所引发或引导的被扩展的图像技术,这些技术无不应用在现代视觉设计领域的各个方面,并且,由此引起社会的追热,引起审美观念的改变。这些改变是在进行中的,变化中的,也是在发展中的。对于未知的美,我们做的只是追寻和记录,我们不知道以后的美将会是什么样,尽管我们苦苦追寻,孜孜探讨,同时也在默默审视。我们在追寻中享受美,在探讨中认知美,在审视中体验美……
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • Delphi程序设计教程

    Delphi程序设计教程

    本书为适应不同层次读者的需要,从Delphi的基本知识讲起,由浅入深,全面讲述了Delphi的集成开发环境、Delphi的编程语言——ObjectPascal、常用组件的使用、窗体的设计、菜单的设计、对话框的设计、多文档界面程序的设计、多媒体编程和数据库应用程序设计等内容。
热门推荐
  • 兽血澎湃

    兽血澎湃

    凶兽肆虐的异界,人类在欲望中沉沦!一个身怀象形拳术的穿越少年,脑藏上古应龙魂兽,身具黑白水银异瞳,从没落的世家一飞冲天,踏着七界兽灵的累累尸骨救赎苍生……哥既生,诸神当灭!(其实哥是憨厚正直粉嫩青,正牌的纯洁哦,异瞳转动,场景再现,偷窥……说不看只瞄一眼!)有完本作品《盛唐权奸》书友交流群:96442306
  • 非现

    非现

    这是一本把我多年来的幻想按在所塑造角色身上的悦己文,估计不会是什么爽文,没什么内涵,也不烧脑,简单一点的让我自己写的轻松些就会觉得很幸福
  • 四疆云歌

    四疆云歌

    秋林山距离枫叶城三十里路,这一带常年猩红如火,故名秋林,此刻时值深冬,四野寂静无声,穹顶挂着一弯月亮,照得漫山的绯红有些诡谲恐怖。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 魔主来了

    魔主来了

    这个世界上总有那么一些人,他们英勇无畏,固执,乃至偏执,不羁,骄傲,而又狂妄。即使到了绝境,他们也绝不妥协。这是一个李长川魂穿一代魔主,一脸懵逼的被数百人追杀至跳崖,带着绝世武功卷土归来的故事。
  • 坠落星云

    坠落星云

    地狱的光,地狱的黑暗掩盖不了光,所以在可怕的地狱也有光的存在。天上的光,天上的光覆盖不了黑暗,所以在美好的天也有黑暗的存在。就像邪不胜正,正也不胜邪,两者只能相互共生缺一不可。
  • 北辰蔷薇记

    北辰蔷薇记

    一个草根少女和将军府少子共击敌人,重建天下的故事。将军女儿倾慕皇子,却远嫁和亲。
  • 九州·结海楼

    九州·结海楼

    她是南海归墟中走出来的女子。传言,归墟鲛人一族,个个容颜倾城。族中有两处密地,一曰海市,二曰蜃楼。海市坐拥天下,蜃楼永得长生。是不是只要抓住了她,长生与天下,二者皆可到手!--情节虚构,请勿模仿
  • 永恒帝道

    永恒帝道

    究竟什么是道?我,自有我道!普天之下莫非王土,率土之滨莫非王臣!唯我帝道永恒!一觉醒来,陌生而又熟悉的世界,究竟会发生什么?是继续装疯卖傻?还是霸绝天下?一切早已命中注定!
  • 重返影坛当影后

    重返影坛当影后

    32岁的顾凌一梦回三年之约到期之前,她发誓就算被封杀也不再放弃,凭演技逆袭。陆鹏昊:为什么那么拼?顾凌一:空有演技没有靠山,当然要拼陆鹏昊:难道我不能做你的靠山?顾凌一:……