Java单例设计模式实例
众所周知,设计模式是为解决特定问题而创建的。单例解决了只创建一个类的一个对象的问题。单例设计模式是最流行的设计模式之一,它限制任何类只能有一个对象。这个物体可以在任何需要的地方使用。在某些情况下,我们只需要一个类对象,比如对于数据库连接,我们只需要一个对象来处理每个与查询相关的数据库,而不是每次都创建新的对象。我们只创建一个数据库连接对象,并为其分配全局访问权限,以便可以在任何地方访问它。
带急初始化的单例设计模式
顾名思义, 急切初始化意味着一个类的实例在实际需要之前就被创建了。主要是在系统启动时完成。在一个急于初始化的singleton模式中,不管是否有其他类实际请求它的实例,都会创建单例实例。这种方法效果很好,但有一个缺点。不管是否需要在运行时创建实例。如果这个实例不是一个大对象,并且我们可以忍受它未被使用,那么这是最好的方法。
延迟初始化的单例设计模式
因为 懒初始化我们很清楚,它只是遵循懒惰人的逻辑,他从不做任何事情,直到它的迫切需要,懒惰初始化也是一样。类的对象只在需要时创建,而不是像上面那样。所以,在singleton中,对象只被创建一次,当第一次需要它时。
使用Singleton设计模式的好处
节省内存:很明显,每当我们创建任何类的对象时,它都会占用内存空间,所以创建多个对象意味着内存中占用的空间会更多。由于singleton类可能只有一个对象,所以它可以简单地节省内存。
灵活性:由于实例化过程是由类控制的,所以类可以灵活地改变实例化过程。
这个设计模式是如何工作的
Singleton模式有私有构造函数,我们知道private只能访问它的类。因此,它限制在类之外创建类的对象。
单例模式有静态成员,因为静态成员只在内存中获得一次空间。这个成员包含singleton类的实例。
最后,Singleton模式有一个静态工厂方法,它提供对单例对象的全局访问。它负责将对象返回给调用者,以便他们可以使用它。
单例设计模式的现实场景
因为我们都很熟悉大学,它的结构,几乎每个人都上过大学的都会参加。在设计大学管理系统时,副校长班将是独生子女。因为一所大学只有一个声音校长,所以副校长的对象不能超过一个。会有员工班,员工可以是老师、牡丹、实验室助理等等。所有这些都可以有多个对象,因为任何大学都有很多教师、牡丹、实验室助理。但是只有一个副总裁,所以我们可以用单例模式来限制它。
Eager Singleton设计模式Java实例
public class EagerSingleton { //private static member of class which holds the object of the class. private static EagerSingleton instance = new EagerSingleton (); //private constructor private EagerSingleton () { } //public method which is responsible making the global access of object public static EagerSingleton get Instance () { return instance; } }
Eager Singleton设计模式Java实例
public class Lazy Singleton { //private static member which will hold the object when initialized private static Lazy Singleton instance = null; //private constructor private LazySingleton () { } //While any request comes it checks when object is created already or else it creates //return the object public static LazySingleton getInstance () { if (instance == null) { synchronized (LazySingleton.Class) { //Double check if (instance == null) { instance = new LazySingleton (); } } } return instance; } }