100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 单例模式(懒汉 饿汉)

单例模式(懒汉 饿汉)

时间:2023-07-20 15:22:27

相关推荐

单例模式(懒汉 饿汉)

单例模式

设计模式:

设计模式是一套被大部分人所接受的,总结的,具有代表性的代码模式。设计模式面向对象的。主要对代码复用性,重用性,可维护性,通用性设计模式总共就23种实际是对代码的设计。

六大设计原则

单一职责原则:某个代码模块,只负责一件事,与它无关的事不要过问。迪米特法则:接口隔离原则:依赖倒置原则:开闭原则:对访问是开放的,对修改是关闭。里氏替换:

单例模式

单例,单个实例,单个对象,只有一个对象。

分析

保证只能创建一个对象创建对象靠的是构造方法不能让外面随便的调用构造方法为了保证不让外面随便的调用构造,所以只能将构造私有构造私有了,只能自己用,而我们要保证有一个对象,所以这个对象只能我自己创建将对象给到别人,提供一个公开的访问这个对象的方法就可以了。由于我们没有对象,所以外部访问获取对象的方法只能通过类访问,方法就要是静态方法是静态的。所以对象也是静态变量

实现方式

饿汉式:类加载的时候,就创建出来一个对象,不管你用不用。效率高,消耗内存

/*** @Author: 廾匸* @Date: /10/24 10:45* @Description: 饿汉式单例模式* @version: 1.0*/public class Single {private int id;private String name;private String pass;//构造私有,只能自己创建对象,饿汉式,类加载就创建好对象private static Single single = new Single(1,"abc","abc");private Single() {//防止外部创建对象,构造私有}private Single(int id, String name, String pass) {this.id = id;this.name = name;this.pass = pass;}// getter,setter方法...//提供公开的访问方法,由于外部没有对象调用方法,所以只能是静态方法public static Single getInstance() {return single;}}

懒汉式:你用的时候才创建对象,效率较低,对内存比较友好

/*** @Author: 廾匸* @Date: /10/24 10:45* @Description: 饿汉式单例模式* @version: 1.0*/public class Single {private int id;private String name;private String pass;//构造私有,只能自己创建对象,懒汉式,调用的时候才创建,此时对象为空private volatile static Single single = null;private Single() {//防止外部创建对象,构造私有System.out.println("无参构造");}private Single(int id, String name, String pass) {this.id = id;this.name = name;this.pass = pass;}// getter,setter方法...//提供公开的访问方法,由于外部没有对象调用方法,所以只能是静态方法public static Single getInstance() {//懒汉式,调用此方法时进行对象的创建,为保证单例,判断如果对象为空,代表// 第一次创建,之后对象不为空,不再进行创建对象,能够保证对象的唯一if (single == null) {synchronized (Single.class) {if (single == null) {single = new Single();}}}return single;}

通过匿名内部类实现懒汉式

public class Single {//构造私有private Single() {}// 静态内部类private static class Inner{private static final Single single = new Single();}// 获取单例对象方法public static Single getInstance(){return Inner.single;}}

在项目中,只有一个对象,不会消耗太多内存,被大多数人所接受的。创建对象交给类自己,用的人不用考虑如何创建对象。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。