目录
概述
单例模式
创建一个单例对象SingletonPatternObj
创建一个测试用例TestSingletonPatternObj
总结
概述
今天来聊聊Java的设计模式,大部分开发人员应该都有听过。但在实际开发中,我们是否都有用到这种思想,这个就比较考究个人功底。从字面意思可知,“模式”是一种规范,或者是一种经验,是众多开发人员经过长时间试验和错误总结出来的。对于初级开发者来说,刚开始可能会比较难以用于实战中,但只要自己拜读过一些技术框架的源码,就会发现原来自己一直和这些设计思想有交集。那对于中高级的开发者来说,就必须掌握这些设计思想,对于代码架构设计是有极大的帮助。Java的设计模式差不多有二十多种,常用的也有十种左右。后续我会挑一些比较常用的设计模式来讲讲。
单例模式
单例模式应该是Java中最常见和最简单的设计模式之一。简单来说,单例类只有一个实例,而且还是自己创建自己的唯一实例,因此我们要用到这个实例,都是通过这个对象提供。
创建一个单例对象SingletonPatternObj
package com.ispeasant.java.designpattern.singletonpattern;
/**
* 单例模式
*/
public class SingletonPatternObj {
// 创建一个SingletonPattern的一个对象
private static final SingletonPatternObj sp = new SingletonPatternObj();
// 构造函数为私有限制,只能产生一个对象
private SingletonPatternObj(){
}
// 其它类想获取本类,只能通过本方法来获取,这样才能保证唯一性
public static SingletonPatternObj getSp(){
return sp;
}
// 写一些测试方法来测试一下,后续可根据实际情况来扩展
public void methodDemo() {
System.out.println("methodDemo");
}
}
创建一个测试用例TestSingletonPatternObj
package com.ispeasant.java.designpattern.singletonpattern;
/**
* 测试我们创建的单例
*/
public class TestSingletonPatternObj {
public static void main(String[] args) {
// 只能通过这种方式获取对象
SingletonPatternObj sp = SingletonPatternObj.getSp();
// 测试方法
sp.methodDemo();
}
}
执行结果如下:
总结
以上是我们最常用的单例模式的通用代码思路,但在实际开发中,我们是会基于通用模式进行扩展。单例模式大致包含以下几种实现方式:
懒汉式:懒汉式有两种方式,如果加锁synchronized,就能保证线程安全,否则线程不安全,不推荐。
饿汉式:这种方式比较常用,但可能会造成资源浪费。如果是一些轻量级Java类,对实际性能不会影响太大。上面举得例子就是饿汉式,可参考研究。
还有一些衍生的,但相对来说用得比较少,就不一一举例说明。
可关注本人公众号,回复“2020073001”获取代码下载链接。
只要自己有时间,都尽量写写文章,与大家交流分享。
本人公众号:
个人博客地址:http://www.ispeasant.com/