Дизайн паттерндер. 4-сабақ. Құру паттерндері (Creational patterns)

Блог аты abzalkalimbetov
Аты: Singleton
Проблема: Класс объектісін құру ресурстарды (уақыт, жад) көп кетіреді.
Шешім: Бүкіл жүйеге бір ғана класс объектісін құрып, соны қолдану. Басқа класс объектілерінің құрылуын болдырмау. Жалғасы
Singleton құрудың 2 жолы бар: бастапқы класс жадқа қосылған кезде (eager) және сұраныс бойынша класс алғаш шақырылған кезде (lazy)
құру жолдары.
Eager Singleton мысалы
public class EagerInitializedSingleton {
     private static final EagerInitializedSingleton instance = new EagerInitializedSingleton();
     
    //private constructor клиентке өз объектісін құруға тыйым салады
    private EagerInitializedSingleton(){}
 
    public static EagerInitializedSingleton getInstance(){
        return instance;
    }
}

Бірақ көп жағдайларда (базаға байланыс, лог жасау) Lazy Singleton қолданылады. Келесі мысалда класс объектісі алғаш шақырылған кезде ғана құрылады
public class LazyInitializedSingleton {
 
    private static LazyInitializedSingleton instance;
     
    private LazyInitializedSingleton(){}
     
    public static synchronized LazyInitializedSingleton getInstance(){
        if(instance == null){
        synchronized (LazyInitializedSingleton.class) {
            if(instance == null){
                instance = new LazyInitializedSingleton();
            	}
        }
    	}
    return instance;
    }
     
}


Қолданылуы:
EagerInitializedSingleton.getInstance();
LazyInitializedSingleton.getInstance();


Нәтиже: Класс объектісінің құрылуын басқаруға және оны шектеуге мүмкіндік береді.

0 пікір

Тек қана тіркелген және авторизациядан өткен қолданушылар пікір қалдыра алады.