/**
单例设计模式
1、构造方法私有化;
2、声明一个静态的本类对象;
3、给外部提供一个静态方法来获取本类的对象实例
1、饿汉式:在类被加载后,对象就被创建,到程序结束后释放(占用内存的时间长,提高效率)
2、懒汉式:在第一次调用getInstance方法时,对象就被创建,到程序结束后释放(占用内存的时间短,效率低【懒加载或延迟加载】,在多线程访问时会有安全问题)
单例设计模式的目的:为了节省重复创建对象所带来的内存消耗,从而来提高效率
能不能使用构造方法私有化+静态方法来替代单例?
*/
public class Test21 {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getInstance();
s1.print();
Singleton2 s2 = Singleton2.getInstance();
s2.print();
Tools.print1();
}
}
//饿汉式 单例
class Singleton1{
private Singleton1(){} //构造方法私有化
private static Singleton1 s = new Singleton1(); //声明一个静态本类对象
public static Singleton1 getInstance(){ //给外部提供一个静态方法来获取本类的对象实例
return s;
}
public void print(){
System.out.println("我是饿汉式");
}
}
//懒汉式 单例
class Singleton2{
private Singleton2(){}
private static Singleton2 s;
public static Singleton2 getInstance(){
if (s == null){
s = new Singleton2();
}
return s;
}
public void print(){
System.out.println("我是懒汉式");
}
}
//构造方法私有化+静态方法替换单实例
class Tools{
private Tools(){}
public static void print1(){
System.out.println("我是:构造方法私有化+静态方法");
}
public static void print2(){
}
}
单例设计模式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在iOS中有很多的设计模式,有一本书《Elements of Reusable Object-Oriented S...
- 面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计...
- 单例模式4:多线程二(双重锁定)这种双重锁定考虑了线程安全,是正规写法 游戏常用设计模式之单例设计模式的写法大概常...
- 什么是单例一个类只允许有一个实例,在整个程序中需要多次使用,共享同一份资源的时候,就可以创建单例,一般封装成工具类...
- @陈美君|3631|C位班班 https://www.jianshu.com/p/37a067463a7a?fro...