设计模式之---单例模式
2016-12-27 00:00
246 查看
摘要: 设计模式之---单例模式
设计模式之---单例模式
单例模式1饿汉式:
单例模式2懒汉式:
测试
先写多线程的调用
juit测试
其实还看了别人的更多还有使用了内部类来实现的。还是记个笔记吧。
设计模式之---单例模式
单例模式1饿汉式:
public class Signleton { // 步骤1.提供私有的构造方法 private Signleton() { } // 步骤2. 内部私有化 private static Signleton signleton = new Signleton(); // 步骤3. 提供外部方法方法(由于这个方法在这个对象里,所以还是需要new一个这个对象,所以我没在该方法前加static,这样使用该方法就不需要加new这个对象) public static Signleton getSignleton() { return signleton; } // 以上称为饿汉式单例模式,因为在静态属性类加载时,就被初始化放进内存了。 }
单例模式2懒汉式:
public class Signleton { // 步骤1.提供私有的构造方法 private Signleton() { } // 步骤2. 内部私有化 private static Signleton signleton = null; // 步骤3. 提供外部方法方法(由于这个方法在这个对象里,所以还是需要new一个这个对象,所以我没在该方法前加static,这样使用该方法就不需要加new这个对象) public synchronized static Signleton getSignleton() { //首次访问时才创建对象,所以称为懒汉式单例模式。 //注意会有线程安全问题(解决可以在getSignleton方法上加上synchronized)。 //synchronized来确保为该方法只有一个对象在调用,但会造成性能问题) if (null == signleton) { signleton = new Signleton(); } return signleton; } }
测试
先写多线程的调用
public class MyThread extends Thread { @Override public void run() { System.out.println(Signleton.getSignleton()); } }
juit测试
import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestSignleton { @Before public void before() { } @After public void after() { } @Test public void test1() { Signleton signleton1 = Signleton.getSignleton(); Signleton signleton2 = Signleton.getSignleton(); System.out.println("signleton1: " + signleton1); System.out.println("signleton2: " + signleton2); } @Test public void testLazy() { new MyThread().start(); new MyThread().start(); new MyThread().start(); new MyThread().start(); } }
其实还看了别人的更多还有使用了内部类来实现的。还是记个笔记吧。
相关文章推荐
- ITer必知的几个网站
- Qt5.7以及5.8在cmake工程中使用C++14编译遇到的问题及解决方案
- git submodule 使用命令简介
- HTML5 元素选择流程图
- 获得当前时间所在周的第一天和第七天日期
- js判断undefined类型
- Spark机器学习· 实时机器学习
- Redis与KV存储(RocksDB)融合之编码方式
- 阿里技术总监郭东白:创新之歌该如何唱
- 页面以及全站性能损耗计算
- 三年0故障总结,提升代码质量的秘诀
- python编码最佳实践之总结
- 阿里技术协会好文推荐:Android绘制流程
- linux 环境变量设置 profile文件说明
- PreparedStatement和CallableStatement都可以调用存储过程
- mysql case when 的用法,绝对正确,可以看效果图,适合入门。
- 根据需要,异步处理
- 由玄幻小说想到的
- 权威社区数据 行业内最需要的语言新排名
- 生日问题之我见