首页 > 其他 > 详细

设计模式——单例模式

时间:2019-03-22 15:49:15      阅读:134      评论:0      收藏:0      [点我收藏+]

知识点:单例模式——只有一个实例的类

什么是设计模式:设计模式是在大量实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。

什么是单例模式:采取一定的方法保证,整个软件系统中,一个类只能存在一个对象实例

具体实现

 在这个类的内部需要实现

(1)将类的构造方法私有化,使得在在类的外部不能通过new创建该类的实例化对象

(2)在类的内部实例化唯一的对象,用private static修饰

(3)定义一个静态方法,供类的外部调用唯一的实例对象

  实现一 饿汉模式:在类加载时,对象就已经创建

//饿汉式
public class Singleton {

//私有化构造器,这样外部的类无法调用构造方法
private Singleton(){}

public static String name;

//内部实例化类的实例
private static Singleton instance=new Singleton();

//私有化对象,类通过公共方法调用
public static Singleton getInstance(){
return instance;
}
}

补充
当Singleton类被加载时,会初始化static修饰的instance,静态变量被创建并且分配内存,之后实例对象会一直占着这段内存,当类被卸载,

静态变量才被摧毁,释放内存


实现二 懒汉模式:调用get()方法时,实例才被创建
//懒汉式(线程安全问题)
public class Singleton1 {

//私有化构造器
private Singleton1(){}

//内部实例化类的实例
private static Singleton1 instance;

//私有化对象,类通过公共方法调用(创建,返回实例)
public static Singleton1 getInstance(){
if(instance==null) {
instance=new Singleton1();
}
return instance;
}
}

    补充当Singleton类被加载时,静态变量instance未被创建并且分配内存,只有当第一次调用getInstance方法,初始化instance,并且分配内存

在多线线程的情况下,是不安全的

参考:https://www.cnblogs.com/binaway/p/8889184.html

 

设计模式——单例模式

原文:https://www.cnblogs.com/shuaifing/p/10578661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!