шарка - еднократна - (модел сек)
Вие сте тук: Начало - PHP - PHP Основи - проектиране модел "Сингълтън" (Образец Singleton).
Днес искам да се разбере на шарка "самотник". което е много често се използва в обектно-ориентираното програмиране.
шарка "Сингълтън" Модела Сингълтън или трябва да не сме имали много подобни обекти, както и винаги да се използва само един. Като пример, един клас за работа с базата данни.
клас DB защитена $ db;
обществена функция __construct () $ това-> db = нов MySQLi ($ домакин, $ потребител, $ пас, $ база данни);
>
обществена функция GET () <>
обществена функция набор () <>
обществена функция дел () <>
>
$ Db1 = нов DB ();
$ Db2 = нов DB ();
В момента има 2 имота $ DB1 и $ DB2. и след това някой, който не знае, че съществува такъв обект ще създаде една трета и т.н. Това е един много лош ефект върху работата и четимостта, и може да се провали в този случай, защото на на хостинг ограничен брой връзки към базата данни.
За да се реши този проблем, и е измислен модел Сингълтън.
клас DB защитена $ db;
статично частен $ инстанция = нула;
частен функция __construct () $ това-> db = нов MySQLi ($ домакин, $ потребител, $ пас, $ база данни);
>
частен функция __clone () <>
статична функция getInstance (), ако (самостоятелно :: $ например == нула) самостоятелно :: $ инстанция = нова личност ();
>
завърне самостоятелно :: $ инстанция;
>
>
$ Db = нов DB (); // грешка
$ Db = DB :: getInstance ();
$ Db2 = DB :: getInstance ();
$ Db3 = DB :: getInstance ();
За да се създаде обект по обичайния начин е невъзможно, ние правим нашия конструктор е частна. но също така не забравяйте за факта, че обектите могат да бъдат клонирани и близо метод __clone. Създаваме статичен имот $ например. която по подразбиране е нула. Сега се създаде метод статичен getInstance (). която проверява дали ни статично нула собственост. Ако отговорът е да, тогава ние създаваме инстанция на нашия обект и да го върне, а ако не, тогава просто го върне. По този начин, ние винаги ще бъде една и съща инстанция, колко от тях ние не създаваме. Използвайте го, е много проста: присвояване на стойност на променлива, която връща метода на статичното getInstance (). клас DB. и продължаваме да работим както обикновено с обекта.
Така че сега, че знаете какво Сингълтън модел. и най-важното, защо е необходимо и къде да го прилага.
Препоръчайте тази статия на приятел:
Ако сте харесали сайта, линк към него (на вашия сайт, форум, при контакт)
Тя изглежда така: