懒汉式和饿汉式

                           单例 (Singleton)设计模式

设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
      所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。

单例(Singleton)设计模式-饿汉式

class Single{
     //private的构造器,不能在类的外部创建该类的对象
     private Single() {} 
     //私有的,只能在类的内部访问
     private static Single onlyone = new Single();
     //getSingle()为static,不用创建对象即可访问
     public static Single getSingle() {
        return onlyone;
     }
}
 public class TestSingle{
    public static void main(String args[]) {        
        Single  s1 = Single.getSingle();      //访问静态方法
        Single  s2 = Single.getSingle();
        if (s1==s2){
            System.out.println("s1 is equals to s2!");
        }}}

单例(Singleton)设计模式-懒汉式

class Singleton{
    //1.将构造器私有化,保证在此类的外部,不能调用本类的构造器。
    private Singleton(){
    }
    //2.先声明类的引用
    //4.也需要配合static的方法,用static修饰此类的引用。
    private static Singleton  instance = null;
    //3.设置公共的方法来访问类的实例
    public static Singleton  getInstance(){
    //3.1如果类的实例未创建,那些先要创建,然后返回给调用者:本类。因此,需要static 修饰。
        if(instance == null){
            instance = new Singleton();
        }
    //3.2 若有了类的实例,直接返回给调用者。
        return instance;
    }  }
      
      注:暂时懒汉式还存在线程安全问题,讲到多线程时,可修复

懒汉式和饿汉式

时间: 2024-10-10 08:26:25

懒汉式和饿汉式的相关文章

单件模式详解:懒汉式与饿汉式

class Instance{} //懒汉式 class LSingle{ private static  Instance _instance = null; private LSingle(){} public static Instance getInstance(){ if(_instance==null){ synchronized(LSingle.class){ _instance = new Instance(); } } return _instance; } } //饿汉式 c

Java单例模式--------懒汉式和饿汉式

单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用.单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例.它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接.这是个简单的方法,在不考虑并发的时候这也是个不错的选择.但实际上,一个网站是并发的,并且有可能是存在大量并发操作的.如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统

(单例设计模式中)懒汉式与饿汉式在多线程中的不同

/* 目的:分析一下单例设计模式中,懒汉式与饿汉式在多线程中的不同! 开发时我们一般选择饿汉式,因为它简单明了,多线程中不会出现安全问题! 而饿汉式需要我们自己处理程序中存在的安全隐患,但是饿汉式的程序技术含量更高! */ /* class SinglePerson implements Runnable{ private static SinglePerson ss = new SinglePerson("hjz", 22);//恶汉式 private int age; privat

[转]设计模式--单例模式(一)懒汉式和饿汉式

单例模式是设计模式中比较简单的一种.适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统, 它们都是原型的例子.典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问 指针,这便是众所周知的单例模式的应用.当然这只有在你确信你不再需要任何多于一个的实例的情况下. 单例模式的用意在于前一段中所关心的.通过单例模式你可以: 一.确保一个类只有一个实例被建立 二.提供了一个对对象的全局访问指针 三.在不影响单例类的客户端的情况下允许将来有多个实例 经典的单

单例之懒汉式和饿汉式

所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同. “懒汉式”是在你真正用到的时候才去建这个单例对象: public class Singleton{ private Singleton(){} private static Singleton singleton = null: //不建立对象 public static synchronized Singleton getInstance(){ if(singleton == null) { //先判断是否为空 singlet

单例设计模式(懒汉式,饿汉式)

设计模式:解决问题的一种行之有效的思想 单例设计模式:保证了一个类在内存中只能有一个对象,比如多程序访问一个配置文件,希望多程序操作都是同一个配置文件中的数据,那么就需要保证该配置文件对象的唯一性. 思路:1.怎么做才能保证这个对象是唯一的呢?其他程序通过new创建该类对象时根本无法控制个数,那么,就不让其他程序创建该类的对象了,因为不可以控制.2.不让其他程序创建,就该在本类中自己创建一个对象.3.该类将创建的对象对外提供,让其他程序获取并使用. 步骤:1.怎么实现不让其他程序创建该类对象呢?

单例模式の懒汉式和饿汉式

单例模式,是用来解决一次只能实例化一个对象的问题. 根据对象实例化的先后,有两种实现方式: 懒汉式 饿汉式 下面是在代码中有详细的说明两种实现方法 package 设计模式; /* * 单例的设计模式(饿汉式) * 1.解决的问题:使得一个类只能够创建一个对象 * 2.如何实现 * */ public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstanc

单例模式实现方法之懒汉式、饿汉式

Singleton 单例模式是一种经常在项目开发中使用的程序设计模式,它用于创建一个全局共享的实例对象.该实例对象在整个应用程序中只有一个,不会出现更多的该实例对象. 实现原理就是将类的构造方法私有化,即使用private修饰符来修饰构造方法,这样外部就不能使用构造方法创建对象了,本类内部还是能够创建对象的,所以,可以创建一个本类类型的成员变量来保存本类的唯一对象,然后提供属性访问器方法获取这个唯一的实例,但是每次获取的都是同一个对象,而不是重新创建的. 接下来将介绍两种比较常用方法来实现单例模

单例模式之懒汉式与饿汉式

懒汉式单例 package single;?public class Monitor { //开始没有班长,用静态属性表示 private static Monitor monitor=null; //构造方法私有化,防止出现多个班长对象 private Monitor(){}; public static Monitor getmonitor(){ if(monitor==null){ monitor=new Monitor(); } return monitor; }} 首先班里没有班长,用