一日一摸之第四日:Singleton模式

原创 2007年09月13日 23:41:00

 需要实现只让new class执行一次,就只会产生一个类的对象实例。

这个模式是在单个类里面就可以实现,有2个需要注意的地方,1、类的构造函数必须是私有的,2、提供一个静态方法用来返回该类唯一的实例。

唯一的实例产生有两种方式,在声明该类型的变量时new一个,或者在getInstance方法中进行判断,如果变量为空,先生成一个对象赋给该变量,然后返回该变量

实例:

/**

 *单例模式实例

 *@version 1.0 ,9/13/2007

 */

import java.util.*;

import java.io.*;

/**

 *读取系统参数信息,生成系统控制参数对象

 *@author tsimgsong

 */

public class SingletonExample {

       /**

        *系统属性列表

        */

        Properties prop = new Properties();

        private static SingletonExample se = null;

        private SingletonExample(){

               System.out.println("Initializing...");

               try{

                   FileInputStream fis = new FileInputStream("sysConf.prop");

                   prop.load(fis);

               }catch(Exception e){

               }

        }

 

        public static SingletonExample getInstance(){

               if(se == null ){

                      se = new SingletonExample();

               }

               return se;

        }

 

        public Object getConf(String key){

               return prop.get(key);

        }

        public void setConf(String key,String value){

               prop.put(key,value);

        }

}

 

/**

 *客户端测试程序

 */

class Main

{

        public static void main(String[] args){

               SingletonExample se = SingletonExample.getInstance();

               System.out.println(se.getConf("key1"));

               se.setConf("key2","value2");

               SingletonExample se2 = SingletonExample.getInstance();

               System.out.println(se2.getConf("key2"));

        }

}

输出:

Initailizing…

value1

     Value2

 

小结:

  该模式比较简单,可以结合工厂模式一起使用,工厂产生出来的就是同一个实例。

 

一日一摸之第三日:Builder模式

使用Builder模式的目的就在于将构建复杂对象的过程和它的部件解耦,是解耦过程和部件,是为了将部件和组装过程分开。Builder模式参与者:1、  Builder,抽象工人规定产生对象实例的接口2、...
  • tsimgsong
  • tsimgsong
  • 2007年09月13日 23:03
  • 484

一日一摸之第二日:原型模式

 所谓原型模式,就是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式不是利用类产生对象实例,而是从一个对象实例产生出另一个对象实例,复制建立对象。命名由来是因为这个Patter...
  • tsimgsong
  • tsimgsong
  • 2007年09月06日 00:56
  • 513

一日一摸之第一日:工厂模式

 工厂模式(Factory Pattern)工厂模式主要为创建对象提供了接口,工厂模式按照《java与模式》中的提法分为3类:1、简单工厂模式(Simple Factory)2、工厂方法模式(Fact...
  • tsimgsong
  • tsimgsong
  • 2007年09月05日 00:39
  • 917

singleton模式的几种实现方式

一、最简单的方式 public static Singleton getInstance() { if (instance == null) { instance = new...
  • lxgwm2008
  • lxgwm2008
  • 2012年07月02日 22:17
  • 3565

写一个Singleton模式的例子

public class Singleton{  private static Singleton single = new Singleton();  private Singleton(){}  ...
  • owenliu563
  • owenliu563
  • 2014年03月08日 13:18
  • 929

[Java设计模式](一)怎样实现Singleton(单例)模式编程

单例模式是开发模式中最简单,最易于理解的一种模式。简单地说,它指的就是始终保持一个实例的意思。但是,Java的类是可以穿件多个实例的,那么,怎么实现呢? 顾名思义,单例模式就是只有一个实例。单例模式确...
  • u012942818
  • u012942818
  • 2015年03月30日 15:20
  • 1132

一日一摸之第五日:Façade(外观)模式

为子系统中的一套接口提供了一个统一的接口。Facade 定义了一个更高层次的接口,使子系统更容易使用。在开发一个系统时,在收集到用户对软件的要求之后,架构设计就开始了,架构设计的一个主要目的就是把系统...
  • tsimgsong
  • tsimgsong
  • 2007年09月14日 12:42
  • 553

javascript设计模式-singleton(单例)模式

singleton(单例)模式被熟知的原因是因为它限制了类的实例化次数只能一次,单例模式,在该实例不存在的勤快下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,则会简单返回该对象的...
  • yilanyoumeng3
  • yilanyoumeng3
  • 2016年08月22日 14:38
  • 722

实现Singleton 模式——七种实现方式

题目:设计一个类,我们只能生成该类的一个实例 [java] view plaincopyprint? public class Test02 {        /**   ...
  • judyge
  • judyge
  • 2015年05月03日 18:29
  • 356

【Singleton】单例模式及常见的6种写法—宁可饥饿也不偷懒

单例模式大家并不陌生,分为懒汉式、饿汉式之类的。它们是有些细微的不同,下面就一点一点告诉你们这俩汉子有嘛不同   下面是一个简单的小实例: //简单懒汉式 public class Singleton...
  • knockheart
  • knockheart
  • 2013年06月19日 11:46
  • 2878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一日一摸之第四日:Singleton模式
举报原因:
原因补充:

(最多只允许输入30个字)