Singleton模式
概述
Singleton模式在《图解设计模式》中被划分到了第三部分——生成实例。从书中的概念可以得知,该设计模式为处理问题的设计模式,目前为止一共学习了5种设计模式,我将其进行了分类整理,目前分为了两类,后续在学习完之后我会一并整理发出。首先,Singleton模式根据适用的场景,被我划分到了解决问题的归类中,它解决的问题是,在一个需求中,该类只需要或者是只能拥有一个实例,如果在不使用Singleton模式的前提下,完成这一目标或许就只能靠程序员自觉了,但是能规范的最好还是规范起来。
类图

在我看来,从类图中并不能得出什么有效信息,因为我认为该设计模式的精髓并不在是否将构造器和属性私有化,虽然这确实是很重要的一个环节。从代码看的话会更直观一点。
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("生成了一个实例!");
}
public static Singleton getInstance() {
return singleton;
}
}那么来从代码中理一下Singleton模式的逻辑,首先是私有化的构造器被用来生成一个实例,(这个属性所拥有的一个关键字,便是整个设计模式的精髓所在。关于static我想大家都不陌生,这个设计模式的精彩之处在于,它完美利用了Java的机制,那就是被static所修饰的属性就成为了静态变量,该变量不仅可以被所有对象共享,而且仅在该类被初次加载时才会被初始化。完美解决了上文中提到的需求。)
又由于我们不仅需要创建出这个唯一的实例,我们还得调用它,于是用一个静态方法便是这种情况的最优解,由于在Singleton模式中,创建实例是在类内部完成的,外部无法创建实例,于是便无法调用获取实例的方法,但是静态方法不依赖于任何对象就可以进行访问,完美解决了这个问题。
小结
关于Singleton模式,我也获得了极大的感悟,比方说之前有听同僚聊起过Java EE基础似乎只在初级程序员面试时才会用到,实际开发中并用不到太多,但是我现在改变了观点,不仅要深入了解并掌握Java的各种机制,方法,而且还得灵活运用。或许在未来某一天,解决某一个特定问题的时候,Java其实已经有了比较好的解决方案,但是因为不了解而采取了可用性更低的方法。所以笔者在接下来准备顺便复习一下Java的基础,出一个专栏用于整理笔记。
Singleton模式是一种确保类只有一个实例并提供全局访问点的设计模式。文章讨论了Singleton的实现,强调了构造器私有化和静态变量在模式中的关键作用,以及如何通过静态方法获取唯一实例。作者还分享了对Java机制的深入理解,并计划复习Java基础以应对潜在的开发问题。
1523

被折叠的 条评论
为什么被折叠?



