单例模式
设计模式
设计模式是过去人们对同样问题解决的经验总结(类似于算法中贪心法、分治法、动态规划这些一类一类的解决方法分类。
反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
设计模式需要的工具
面向对象基础:抽象、封装、继承、多态
面向对象原则:封装变化、多用组合,少用继承、针对接口编程、不针对实现编程
这些今后会一一说明(抽象就是将一个具体的事物提取出来变成程序中第一个对象,封装就是之前的隐藏相关属性方法,只能通过公开的方法访问)
单例模式
单例模式是最简单一个设计模式,顾名思义就是整个程序只有一个实例对象
像线程池,缓存,数据库连接等这些类就只有一个对象属于单例
public class Singleton {
public static void main(String[] args) {
// 使用 SingleTonClass 对象
SingleTonClass.getInstance();
}
}
/**
* 规定SingleTonClass 类的对象永远只有一个
*
* 只有一个对象,通过构造方法创建
* 为了使对象不在任何地方都可以被创建,需要用到访问修饰符 - private
* 其他类使用同一个实例 - 只能通过提供的共有方法得到对象,并且都是同一个对象
*/
class SingleTonClass{
// 因为静态的所以只会加载一次,也就是只会有一个 singleTonClass 对象
// 但是为了符合使用才加载的原则该处不对创建对象,令其为空
private static SingleTonClass singleTonClass = null;
// 其他类不能调用SingleTonClass方法,其他类不能创建SingleTonClass对象
private SingleTonClass(){
}
// 其他类只能访问这个方法得到同一个 SingleTonClass 对象
public static SingleTonClass getInstance(){
// 为了使只创建一次对象,判断 singleTonClass 是否为空
if(singleTonClass == null){
// 当且仅当没有对象且 getInstance 方法被调用时才会创建一个对象
singleTonClass = new SingleTonClass();
}
return singleTonClass;
}
}