java===单类设计模式之饿汉式与懒汉式

package cn.china;

public class Single {
    public static void main(String[]args){
//        S singles=S.getInstance();
//        S singless=S.getInstance();
//        System.out.println(singles==singless);
        Test tt=Test.getInstance();
        Test ttt=Test.getInstance();
        tt.setNum(10);
        ttt.setNum(20);
        System.out.println(tt.getNum());
        System.out.println(ttt.getNum());
    }
/**
 * 单类设计模式:
 * 解决的问题,就是可以保证一个类在内存中的对象唯一性
 *如何确保对象唯一性呢?
 *1、不允许其他程序用new创建该类对象。
 *2、在该类中创建一个本类实例。
 *3、对外提供一个方法让其他程序可以获取该对象
 *步骤:
 *1、私有化该类构造函数
 *2、通过new在本类中创建一个本类对象
 *3、定义一个共有方法,将创建的对象返回。 */

}
//饿汉式
class S{
    private static S single=new S();
    private S(){}
    public static S getInstance(){
        return single;
    }
}
class Test{
    private int num;
    private static Test t=new Test();
    private Test(){}
    public static Test getInstance(){
        return t;
    }
    public void setNum(int num){
        this.num=num;
    }
    public int getNum(){
        return this.num;
    }
}
//懒汉式
class single2{//类加载进来没有对象,只有调用了getInstance方法时,才会创建对象。
    private static single2 s=null;
    private single2(){}
    public static single2 getInstance(){
        if(s==null)
            s=new single2();
        return s;
    }
}
时间: 2024-10-16 13:42:14

java===单类设计模式之饿汉式与懒汉式的相关文章

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

/* 设计模式:对问题行之有效的解决方式.其实它是一种思想. 1,单例设计模式. 解决的问题:就是可以保证一个类在内存中的对象唯一性. 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证对象唯一性呢? 1,不允许其他程序用new创建该类对象. 2,在该类创建一个本类实例. 3,对外提供一个方法让其他程序可以获取该对象. 步骤: 1,私有化该类构造函数. 2,通过new在本类中创建一个本类对象. 3,定义一个公有的方法,将创建的对象返回. */ //饿汉式 class

单例设计模式之饿汉式(静态常量)

package com.waibizi; /** * 单例设计模式之饿汉式(静态常量) * 步骤 * 1.构造器私有化(防止new) * 2.类的内部创建对象 * 3.向外暴露一个静态的公共方法 getInstance * 4.代码实现 * @author 歪鼻子 * * *优点:这种写法比较简单,类加载的时候就完成了实例化.避免了线程同步问题 *缺点:类装载的时候就完成了实例化,如果从开始到至终都没使用过这个类,势必会造成资源的浪费 *结论:这种单例模式是可用的,可能会导致浪费(调用getIn

单例设计模式之饿汉式(静态代码块)

package com.waibizi.demo02; /** * 单例设计模式之饿汉式(静态代码块) * 这种方式与饿汉式静态常量的方式是类似的,类装载的时候也有直接创建对象 * @author 歪鼻子 * */ @SuppressWarnings("all") public class Singleton_Pattern { public static void main(String[] args) { // TODO Auto-generated method stub } }

java学习之单例模式(饿汉式与懒汉式)

---恢复内容开始--- 设计模式:解决某一类问题最行之有效的方法 java中有23种设计模式 今天学习其中一种:单例设计模式:解决一个类在内存只存在一个对象 想要保证对象唯一. 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 2.还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象 3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 这三部分用代码体现: 1.将构造函数私有化 2.在类中创建一个本类对象 3.提供一个方法可以获取到该对象 packag

Java---15---单例设计模式:---饿汉式和懒汉式

概念: 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例.   单例模式有以下特点: 1.单例类只能有一个实例 2.单例类必须自己给自己创建自己的唯一实例 3.单例类必须给所有其他对象提供这一实例 饿汉式: /*饿汉式*/ class Single { private static final Single s = new Single(); private Single () {} public static Single getInstance() { return s

设计模式-单例模式(饿汉式及懒汉式的Java实现)

单例模式 单例模式在程序设计中使用的频率非常之高,其设计的目的是为了在程序中提供唯一一个对象(保证只被构造一次),例如写入日志的log对象,windows的任务管理器实现(只能打开一个).这里主要介绍单例模式使用Java的实现(包括饿汉式及懒汉式). 实现 这里使用Log类作为例子,Log对象需要在程序中只有一个对象且只初始化一次. 饿汉式 饿汉式的单例模式理解起来是比较容易的,就是在单例类加载的时候就初始化需要单例的对象.实现也比较容易. public class Singleton{ pri

设计模式中饿汉式单例类和懒汉式单例类

单例模式的特点为: *单例类只有一个实例. *单例类必须自己创建自己的唯一实例. *单例类必须给所有其他对象提供这一实例. 饿汉式单例类: 而饿汉式单例类则在java语言中是最为简单的单例类,这是一个描述饿汉式单例类的类图的实现. 此类图中,此类已经将自己实例化. 源码为: package singleton; public class EagerSingleton { private static EagerSingleton instance=new EagerSingleton(); /*

Java-Singleton(单例创建-饿汉式,懒汉式)

package com.easygo.singleton; /** * Java单例有两种方式,饿汉式和懒汉式,饿汉式是在对象创建之前加载,优先于对象,而懒汉式是在对象创建完成后调用对象的方法来创建对象 * ,了解JVM加载原理的都清楚,正真意义上的单例是饿汉式,在对象创建之前加载. * @author lx * */ public class Singleton { //饿汉式 public static Singleton singleton=null; static { singleton

java GOF23设计模式-饿汉式和懒汉式

单例模式:保证一个类只用一个相同的实例,并且提供一个访问该实例的全局访问方法如任务管理器.回收站饿汉式:把构造器私有,则别人无法访问同时提供一个私有的创建好的static的该实例属性提供一个开放的方法返回该实例 public class Design { private static Design d =new Design(); //类初始化时,立即加载这个对象,没有延迟加载的优势 //即不使用对象会造成资源浪费 private Design() { } public static Desig