一个类如何获得自己的实例?

时间:2018-04-30 00:24:47

标签: java jframe

今天,我正在制作一个教程,将按钮集成到一个基础构建的游戏引擎中。这是请求获胜的代码。

public class ButtonEvent{

    private Window win;

    public ButtonEvent(){

        this.win = Window.getWindow();

    }

    /*Other methods*/

}

我观看了整个视频,但是那个上课的人从来没有提到他对他的Window类所做的事情。在那个视频中,他碰巧点击了窗口类,然后点击下一个课程,在那段时间,当我暂停视频时,我看到了他的getWindow()方法。我在下面写的。

public class Window extends Canvas{

public Window win; //I tried doing this

    /*Other methods*/ 

    public static Window getWindow(){
        return win;
    }

}

有人可以向我解释他是如何做到的吗?我知道这个问题有点模糊,但我必须与之合作。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用单例模式确保在整个应用程序中只创建并使用Window的一个实例。请注意,单例被认为是“反模式”,这意味着通常有更好的方法,例如使用容器管理的对象(请参阅PicoContainer,Spring IoC等)。

public class Window {
    private static Window INSTANCE = null;

    public static Window getWindow() {
        if (INSTANCE == null) {
            INSTANCE = new Window();
        }
        return INSTANCE;
    }
}

答案 1 :(得分:0)

更改

library(tidyverse)
distinct(tbl_, id) %>% 
    sample_n(nrow(.), replace = TRUE) %>% 
    pull(id) %>% 
    map_df( ~ tbl_ %>% 
         filter(id == .x)) %>%
    arrange(id)
# A tibble: 6 x 2
#     id   dta
#  <dbl> <int>
#1  1.00     1
#2  1.00     2
#3  1.00     1
#4  1.00     2
#5  3.00     5
#6  3.00     6

public Window win;

您将获得private static Window win = new Window(); 的正确本地可见性以查看getWindow()字段,并且将通过调用编译器插入的隐式空构造函数来初始化它(这是Window)的分配。