是否正在考虑使用单例或其他方法创建“大师级”课程?

时间:2019-01-11 14:12:40

标签: java design-patterns singleton

我想知道包含“主类”(一个类应该只有一个实例)的代码是否被考虑实现“ Singleton”设计模式,或者是否遵循该概念。 >

我创建了一个类“ GUI”和一个类“ MasterControl” “ MasterControl”类定义了许多与GUI交互的方法,并包含一个可在其上进行操作的“ GUI”实例。

演示基本思想的代码。

public static void main(String[] args){
    MasterControl controller = new MasterControl();
}

public class MasterControl{
    private GUI Servant;

    public MasterControl(){
        Servant = new GUI(this);
    }
}

public MasterControl(){
    Servant = new GUI(this);
}

public class GUI{
    GUIComponent c;
    MasterControl master;

    public GUI(MasterControl master){
        this.master = master;
        c = new GUIComponent(master);
    }
}
//And so on

1 个答案:

答案 0 :(得分:0)

单例设计模式意味着不可能创建该类的多个实例。包含“主类”的代码通常是代表代码起点的类,是一次对其进行初始化的正确格式,但是从技术上讲,没有什么阻止我们创建它的另一个实例。主类的存在并不一定会使它成为Singleton设计模式。

Singleton设计模式的经典实现涉及一个具有自己的“ getter”方法的私有构造函数,以及一个静态和未初始化的实例变量,该变量代表Singleton类的单个实例。这种设计使构造函数仅可通过getter方法使用,因此可以被编程为仅在首次调用getter方法时才调用。这将初始化实例变量,然后从这里返回。看起来像这样:

class Singleton {
    private static Singleton instance;
    private Singleton() {}

    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        return instance;
    }
}