Ленивая Конструкция Компонента - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу создать Объект с этим требованием:

  1. Объект должен быть уникальным, один экземпляр
  2. Компоненты (поля) Объекта будут инициализированы в разных частях моегокод, а не только в одном месте.

Как я могу это реализовать?Использование Singleton или Builder или другого шаблона проектирования.

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вам нужен синглтон.Используйте enum для представления Singleton.enum с одним элементом можно сделать неизменным синглтоном.Например: -

enum Singleton{

    INSTANCE("Value");

    private final String value;

    Singleton(String val){
       value = val;
    }

    public void doSomething(){
        //actions
    }
}
0 голосов
/ 20 сентября 2018

Для создания одного объекта вы можете ограничить свой класс созданием более одного объекта, создав частный конструктор
Пример:

class Test 
{ 

    private static Test single_instance = null; 

    public String s; 

    private Test() 
    { 
        s = "example"; 
    } 

    public static Test getInstance() 
    { 
        if (single_instance == null) 
            single_instance = new Test(); 

        return single_instance; 
    } 
} 
0 голосов
/ 20 сентября 2018

Если вы хотите использовать один object, используйте шаблон Singleton,

Если вы хотите инициализировать поля, отличающиеся от вашего кода, используйте setter методов для этого поля.

Для пункта 1 я бы предложил вам использовать шаблон Singleton.

...