一:饿汉式单例模式
package com.zkn.newlearn.gof.singleton; /** * * 饿汉式单例模式 * @author zkn * */ public class SingletonTest01{ /** * 加载类时,立即加载对象,是没有延迟的。是天然的线程安全的 */ private static SingletonTest01 singleton = new SingletonTest01(); /** * 构造器私有化 */ private SingletonTest01() { } /** * 返回这个对象 */ public static SingletonTest01 getInstance(){ return singleton; } public void test(){ System.out.println("我是饿汉式单例模式"); } }
二:懒汉式单例模式
package com.zkn.newlearn.gof.singleton; /** * * @author zkn * */ public class SingletonTest02 { private static SingletonTest02 singleton; /** * 构造器私有化 */ private SingletonTest02() { } public static synchronized SingletonTest02 getInstance(){ if(singleton == null){ singleton = new SingletonTest02(); } return singleton; } public void test(){ System.out.println("我是懒汉是单例模式"); } }
三:静态内部类
package com.zkn.newlearn.gof.singleton; /** * 静态内部类 线程安全 延迟加载 调用效率高 * @author zkn * */ public class SingletonTest04 { private static class SingletonClassInstance{ private static final SingletonTest04 single = new SingletonTest04(); } private SingletonTest04() { } public static SingletonTest04 getInstance() { return SingletonClassInstance.single; } }
四:枚举(单元素)
package com.zkn.newlearn.gof.singleton; /** * * 枚举实现单例 避免反射漏洞 jvm层面是安全的 * @author zkn * */ public enum SingletonTest05 { /** * 枚举元素本身就是单例 */ INSTANCE; }
相关推荐
常见的创建型设计模式有六种,即简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。通过使用Visio或Rose画UML图,我们可以更好地理解和比较这些模式的特点和适用场合。 在实验报告中,...
- 单例模式:确保一个类只有一个实例,并提供全局访问点,可能在实验中用于控制共享资源。 - 工厂模式:创建对象的抽象,提供一个创建对象的接口,而不用指定具体类,便于后期扩展。 3. **异常处理**: - Java的...
8. **设计模式**:为了编写可维护和可扩展的代码,学生可能需要应用一些常见的设计模式,如工厂模式、单例模式、观察者模式等。 9. **单元测试**:良好的编程实践要求代码必须通过单元测试。JUnit是Java常用的单元...
`表示使用单例模式获取数据库连接池,`$connPool->executeSql($sql,$param)`用于执行SQL语句,其中`$param`是参数化的查询值。 7. **控制器和路由**:在试题四中,`UserController@main`可能是Laravel框架中的一个...
10. **代码结构与设计模式**:良好的代码组织结构和设计模式(如单例模式、工厂模式)可以使代码更易于理解和维护。 通过这个项目,开发者不仅可以学习到基本的Java编程技巧,还能深入理解面向对象编程的思想,并...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................