Java单例设计模式
来源:互联网 发布:汉语语法知乎 编辑:程序博客网 时间:2024/06/07 14:38
注:设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。
23种设计模式。
一、单例设计模式:
解决的问题:使得一个类只能创建一个对象。
方法一(饿汉式):
public class TestSingleton {public static void main(String[] args) {Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();System.out.println(s1 == s2);//true}}class Singleton {//1.私有化构造器,使得在类的外部不能调用此构造器private Singleton() {}//2.在类的内部创建一个类的实例,当加载Singleton类时就创建好了实例对象private static Singleton instance = new Singleton();//3.通过公共的方法来调用私有的对象//4.此公共的方法只能通过类来调用,因此设置为static,同时类的实例也必须为static声明,所以2.需要static关键字public static Singleton getInstance() {return instance;}}方法二(懒汉式:可能存在线程安全问题):
public class TestSingleton {public static void main(String[] args) {Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();System.out.println(s1 == s2);//true}}class Singleton {//1.私有化构造器,使得在类的外部不能调用此构造器private Singleton() {}//2.在类的内部创建一个类的实例,当加载Singleton类时就创建好了实例对象private static Singleton instance = null;//3.通过公共的方法来调用私有的对象//4.此公共的方法只能通过类来调用,因此设置为static,同时类的实例也必须为static声明,所以2.需要static关键字public static Singleton getInstance() {if(instance == null) {instance = new Singleton();}return instance;}}
懒汉式线程安全解决方式:
/* * 对于懒汉式的线程安全问题:使用同步机制 * 对于一般的方法内,使用同步代码块,可以考虑使用this。 * 对于静态方法而言,使用当前类本身充当锁。 */public class TestSingleton {public static void main(String[] args) {Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();System.out.println(s1 == s2);//true}}class Singleton {//1.私有化构造器,使得在类的外部不能调用此构造器private Singleton() {}//2.在类的内部创建一个类的实例,当加载Singleton类时就创建好了实例对象private static Singleton instance = null;//3.通过公共的方法来调用私有的对象//4.此公共的方法只能通过类来调用,因此设置为static,同时类的实例也必须为static声明,所以2.需要static关键字public static Singleton getInstance() {if(instance == null) {synchronized(Singleton.class) {if(instance == null) {instance = new Singleton();}}}return instance;}}
0 0
- java 设计模式,单例设计模式
- java设计模式-单例设计模式
- java设计模式-单例设计模式
- Java设计模式 单例设计模式
- Java设计模式------单例设计模式
- java设计模式----->单例设计模式
- java设计模式:单例设计模式
- java设计模式-----单例设计模式
- Java设计模式----单例设计模式
- java设计模式-单例设计模式
- java设计模式:单例设计模式
- java 设计模式-单例设计模式
- Java设计模式--单例设计模式
- java设计模式---单例设计模式
- Java设计模式-单例设计模式
- JAVA设计模式:单例设计模式
- java-单例设计模式
- Java设计|单例模式
- 1005 Number Sequence
- 连接格点 解题报告
- 安卓状态栏通知Notification方法更新(setLatestEventInfo)
- freemarker学习笔记
- 华为OJ(放苹果)
- Java单例设计模式
- SSL简单交互过程
- 动态规划之 0/1背包 问题
- linux下的锁机制
- PullScrollView进阶(二)----->图片下拉回弹(简易QQ空间下拉效果)
- 单例模式的结构
- 教你如何定制属于自己的listView。
- 树莓派PI2编译天猫魔盘驱动,附编译好ko文件
- apache学习笔记