软件设计模式:单例图案
#java #softwareengineering #designpatterns #singleton

单例图案是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。

此模式涉及一个单个类,该类负责创建一个对象,同时确保仅创建单个对象。此类提供了一种访问其唯一可以直接访问的对象的方法,而无需实例化类的对象。

例子:

假设您有考试,您需要使用计算器,但是您没有一个。因此,您去市场购买计算器,然后在考试中使用它。下次您有另一个需要计算器的考试时,您将不会购买新的考试。您将使用旧的。这样,您可以省钱。单例图案以类似的方式工作。

代码示例:

calculator.java

public class Calculator {

   static Calculator single_instance = null;
   private Calculator(){};

   static Calculator create_instance(){
     if(single_instance == null)
     {
       single_instance = new Calculator();
     }
     return single_instance;
   }

  void printCalculator(){
      System.out.println("Calculator Used");
   }

}

mainActivity.java

import java.util.*;

public class MainActivity {
    public static void main(String[] args) {
        Calculator c1  = Calculator.create_instance();

        c1.printCalculator();
  }
}

解释:

单例设计模式是确保类只有一个实例并提供全球访问点的一种方式。使用这种模式的好处是,它可以节省内存,避免同步问题并允许对实例进行集中控制。

您显示的代码是使用静态工厂方法和私有构造函数在Java中实现单例模式的示例。静态出厂方法(create_instance())返回计算器类的单个实例,而私有构造函数则防止其他类创建计算器的新实例。静态字段(single_instance)是计算器的唯一实例,并且是懒惰的,这意味着仅在需要时创建它。

该代码通过以下步骤来工作:

  • 执行MainActivity类的主要方法时,它将调用计算器类的create_instance()方法。

  • 由于此时单_instance字段为null,因此create_instance()方法创建了一个新的计算器对象并将其分配给single_instance。

  • 然后,create_instance()方法将单_instance对象返回到主方法,将其分配给本地变量C1。

  • 然后,主要方法调用C1上的printcalculator()方法,该方法将使用用于控制台的计算器。

  • 如果主要方法再次调用create_instance()方法,它将不会创建一个新的计算器对象,而是返回存储在single_instance中的现有一个。这确保了整个程序中仅存在一个计算器实例。

关注我:Github Linkedin