шарка - еднократна - (модел сек)

Вие сте тук: Начало - 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. и продължаваме да работим както обикновено с обекта.

Така че сега, че знаете какво Сингълтън модел. и най-важното, защо е необходимо и къде да го прилага.

Препоръчайте тази статия на приятел:

Ако сте харесали сайта, линк към него (на вашия сайт, форум, при контакт)

Тя изглежда така:

  • BB-код справка за индекса (например, можете да го поставите в подписа):