Java中单身人士中的二传手/吸气者

时间:2018-01-05 11:12:31

标签: java singleton getter-setter

我需要为应用程序创建工作setter / getter,它将使用很少的不同类。这个类将使用一个类来存储所有数据。我知道,当我将使用容器类的标准构造函数时,由于容器类的不同实例,我将获得空值。

我在单例中创建了容器类,但是我想问,任何事情都可以做得更好。我的代码:

Container.java:

public class Container {

    public static final String String = "Welcome in Singleton Container\n";
    private String Test = null;
    private String appName = null;
    private String appOwner = null;

    private Container(String mes) {
        System.out.println("Message from Container: " + mes);
    }

    private static class SingletonHolder {
        private final static Container INSTANCE = new Container(String);
    }

    public static Container getInstance() {
        return SingletonHolder.INSTANCE;
    }

    public String getTest() {
        return Test;
    }

    public void setTest(String test) {
        Test = test;
    }

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public String getAppOwner() {
        return appOwner;
    }

    public void setAppOwner(String appOwner) {
        this.appOwner = appOwner;
    }   
}

将使用此容器的示例类:

public class SecondClass {

    Container ctn = Container.getInstance();
    .
    .
    some methods...
}

现在,当我在主要类中使用时:

ctn.setAppOwner(owner);

当我称之为

时,我在任何其他类中都得到了正确的值
Container ctn = Container.getInstance();
ctn.getAppOwner();

这是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ResourceBundle概念。

public class Container {

    public static final String message = "Welcome in Singleton Container\n";
    private static Container container;
    private String test = null;
    private String appName = null;
    private String appOwner = null;

    private Container(String mes) {
        System.out.println("Message from Container: " + mes);
        init();
    }

    private void init() {
        ResourceBundle myResources = ResourceBundle.getBundle("application.properties");
        this.test = myResources.getString("app.test");
        this.appName = myResources.getString("app.appName");
        this.appOwner = myResources.getString("app.appOwner");
    }

    public static Container getInstance() {
        if( container == null ) {
            synchronized( Container.class ) {
                if( container == null ) {
                    container = new Container(message);
                }
            }
        }
        return container;
    }

    public String getTest() {
        return test;
    }
    public String getAppName() {
        return appName;
    }

    public String getAppOwner() {
        return appOwner;
    }
}

您创建名为application.properties的属性文件,其中包含以下内容。

app.test=test
app.appName=abc
app.appOwner=xyz

并将文件夹名称放在classpath