- ¿Cómo, y también es singleton? ¡Y pensé que era normal!
- ¿Cuántas veces puedo decirte que las palabras singleton, mediator, decorator e incluso prototype no tienen nada que ver con la orientación del código?
(conversación llamando a un fumador y llamando a un programador normal)
Hola a todos, soy Maxim Kravets , director ejecutivo del equipo de ingeniería web de Holyweb, adeptos de JavaScript. Y hoy quiero hablar de patrones de diseño.
Echemos un vistazo a un pequeño fragmento de código:
@Injectable()
export class SomeClass implements SomeInterface {
private currentData: Data
setData() {
this.currentData = new Data()
}
, : « decorator SomeClass Dependency Injection, setData Builder new currentData ...»
. , , . , , . — . — , . .
— . , — . , « ». , — , . ( Singleton).
. . ,
Singleton — - , . :
:
,
, :
public static getInstance(): SingletonClassName {
!instance ? instance = new SingletonClassName : instance
}
, ? ! , ! , …
(), ( ) , ( , ). — 100 ().
( ) 100 . , , 100 . , …
, )) , . , () ? ? .
( ) . , - — . ? — ! , (). (), ( ...), (... ).
, , . , .
. .
Singleton — (), , () , .
//
class DataBase {
// Singleton-
private static instance
// ,
// new
private constructor() {
//
….
// ,
this.instance = null
}
//
// , Singleton-
public static getInstance() {
if ( this.instance === null ) {
// ,
this.instance = new DataBase()
}
// ,
return this.instance
}
// query
//
public getQuery(payload) {
//
...
}
}
//
class AppModule {
//
Data() {
//
let foo = DataBase.getInstance()
let bar = DataBase.getInstance()
// foo ,
// bar
foo.getQuery("SELECT ...")
bar.getQuery("SELECT ...")
}
}
, Singleton , , , Singleton , .
Singleton — TypeScript, , .
, Singleton , « » — , . , , , .
Singleton, , , , TTD.
? , ! , , . , (DI), ( Singleton) , .
. . , ?
. Singleton — , . . , , , . Singleton. , :
|
|
. |
. |
. |
. |
. |
. |
, Singleton «» . , Singleton. Singleton.
, , . , , : Telegram @maximkravec.
¿Hay algo que agregar? ¡Deja tus comentarios! Agregaremos los más interesantes al artículo para mejorarlo.