Java软件设计模式------单例设计模式

Java软件设计模式一共分为23种;

一般常用的有:

  单例设计模式

  装饰设计模式

  工厂设计模式

单例设计模式(以后的用处:spring框架IOC,默认创建的对象都是单例的):

  单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

单例设计模式分为两种(饿汉式和懒汉式):

①饿汉式(常用):

特点:只创建一个对象,返回该对象供使用,不能在其它类里实例化。

public class SingleClass {

private SingleClass(){} //私有化构造方法 不能new对象
private static final SingleClass s=new SingleClass();
//创建一个返回本类对象的方法
public static SingleClass getInstance(){
return s;
}
}


②懒汉式:

特点:先不创建对象,用if条件判断,如果没有这个对象才会创建。


public class LazySingleClass {
private LazySingleClass(){}  //私有化构造方法
private static LazySingleClass lsc=null;
//同步代码块
public synchronized static LazySingleClass getInstance(){
if(lsc==null)
lsc= new LazySingleClass();
return lsc;
}
}

我们可以创建一个测试类

public class Test {
public static void main(String[] args) {
//(接收返回值Ctrl+1 点击new local variable)
//饿汉式
SingleClass s1 = SingleClass.getInstance();
SingleClass s2 = SingleClass.getInstance();

//比较s1和s2是否为同一个对象

System.out.println("饿汉式:"+s1.equals(s2));

//懒汉式--------------
LazySingleClass l1=LazySingleClass.getInstance();
LazySingleClass l2=LazySingleClass.getInstance();

//比较l1和l2是否为同一个对象
System.out.println("懒汉式:"+l1.equals(l2));
}
}

这时候我们可以看到控制台输出结果为:

饿汉式:true
懒汉式:true

结论:通过单例模式可以保证系统中一个类只有一个实例。

时间: 2024-10-06 16:58:58

Java软件设计模式------单例设计模式的相关文章

笔记:Java中的单例设计模式

之前接触过单例模式,当初不明白这样的设计用意,今天特地研究了下java中的单例设计模式的用处及用法. 单例模式:单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 单例模式的用处:一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器.如在Windows中就只能打开一个任务管理器.如果不使用机制对窗口对象进行唯一化,将

java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

以下为单例设计模式中的两种经典模式的代码示意: 1 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 2 饿汉式: 3 public class SingleClass { 4 private SingleClass(){} //私有化构造方法 不能new对象 5 private static final SingleClass s=new SingleClass(); 6 //返回本类对象 7 public static SingleClass getInstance(){

java设计模式--单例设计模式

java中共有21种设计模式,其中面试中常问的是单例设计模式: 单例设计模式有两种常用的方式:1.懒汉式:1)先私有化构造函数,让此类不能被实例化:(private 类名(){}):2)在类中自己实例化一个空的对象:(private static 类名  对象名=null;):3)构造一个方法,返回本类的对象:在中间增加一个判断语句,如果进来的对象是个空值,就new一个实例化,否则直接返回此对象: 例如: /** * 懒汉式 * @author chenjun *2017-5-2上午9:16:0

Java面向对象_单例设计模式

单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 1.构造方法私有化 2.声明一个本类对象 3.给外部提供一个静态方法获取对象实例 两种实现方式:饿汉式和懒汉式 何种情况下使用呢?当一个类中没有属性(对象的状态):该类作为工具类使用非常频繁: 好处:节省内存(因为不断创建对象会消耗内存) 1 public class Practice14 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generate

Java学习之单例设计模式

单例设计模式:解决一个类在内存只存在一个对象. (1) 想要保证对象唯一. a)为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 b)还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象. c)为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式. (2) 这三部怎么用代码体现呢? a)将构造函数私有化. b)在类中创建一个本类对象. c)提供一个方法可以获取到该对象. (3) 对于事物该怎么描述,还怎么描述. 当需要将该事物的对象保证在内存中唯一时,就将以上的三

Java中的单例设计模式举例

本例中通过将构造函数私有化的方式将实例化对象的代码放到类内部的静态函数中,从而实现单例设计模式. class Singleton { static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return Singleton.instance; } public void func() { System.out.println("Hi t

Java设计模式—单例设计模式(Singleton Pattern)全然解析

转载请注明出处:http://blog.csdn.net/dmk877/article/details/50311791 相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用的最多的设计模式,可能有非常多人会写几种设计模式.那么你是否知道什么是设计模式?为什么会有单例设计模式即它的作用是什么?单例模式有哪些写法?对于这种问题.可能有部分童鞋并不能非常好的回答,没关系今天就和大家一起来具体的学习下单例设计模式,相信通过学习本篇你将对单例设计模式有个具体的理解. 如有谬误欢

Java设计模式——单例设计模式

单例设计模式 概述 ? 某个类有且只能有一个对象,如:用这个对象记录只有一个用户的信息 饿汉式 步骤 private构造方法 设计一个private static的当前类的对象,并new 提供一个static方法,返回一个当前类的对象 代码 /** * 单例模式 * 饿汉式 */ public class Program1 { public static void main(String args[]) { User user = User.getInstance(); //测试部分 for (

java面试题 单例设计模式

单例设计模式 某个类必须只有一个实例 (构造器私有化) 类必须自行创建实例(含有一个该类的静态变量存储该实例) 类自行向其他类提供这个实例  (对外提供获取该实例对象的方式) 饿汉式 在类初始化的时候直接创建对象  不存在线程安全问题  1.直接实例化饿汉式(简洁直观)   2.静态代码块饿汉式(适合复杂实例化)   3.枚举式(最简洁) 1 1 public class Singleton1 { 2 public final static Singleton1 singleton = new