Video: Curso de Patrones de diseño - 1 Introducción 2025
Los patrones de diseño son formas formales de documentar soluciones a problemas de diseño; uno de los patrones más comunes utilizados en la clase Symbol es el patrón Singleton. Este patrón se utiliza en el desarrollo de aplicaciones iOS y se presenta a continuación en la aplicación Tic-Tac-Toe.
El patrón Singleton se usa en la clase Symbol, observe el formato personalizado de este patrón en la aplicación Tic-Tac-Toe:
-
En lugar de la única instancia devuelta por el patrón Singleton de libro de texto, tres instancias (una para cada los símbolos X, O y en blanco) están permitidos en la clase Symbol. Estas instancias son administradas por los tres métodos estáticos o de clase. Uno de estos métodos se muestra aquí:
+ (TTTSymbol *) SymbolXCreate {@synchronized ([TTTSymbol class]) {if (SymbolX == nil) {SymbolX = [[TTTSymbol alloc] init]; SymbolX-> value = MARKX;} return SymbolX;}}
-
La técnica utilizada en el patrón Singleton para crear solo una instancia se usa en el método getBitmapForSymbol para obtener las imágenes para X, O y símbolos en blanco: > - (UIImage *) getBitmapForSymbol {@synchronized ([TTTSymbol class]) {if (! BitMapsInitialized) {NSString * imagePath = [[NSBundle mainBundle] pathForResource: @ "Imágenes. Paquete / x" de Tipo: @ "png"]; imageX = [[UIImage alloc] initWithContentsOfFile: imagePath]; imagePath = [[NSBundle mainBundle] pathForResource: @ "Imágenes paquete / o" de Tipo: @ "png"]; imageO = [[UIImage alloc] initWithContentsOfFile: imagePath]; imagePath = [[NSBundle mainBundle] pathForResource: @ "Imágenes, paquete / blanco" de Tipo: @ "png"]; imageBlank = [[UIImage alloc] initWithContentsOfFile: imagePath]; bitMapsInitialized = true;}} UIImage * imageSelected = imageBlank; if (self == [TTTSymbol SymbolXCreate]) imageSelected = imageX; else if (self == [TTTSymbol SymbolOCreate]) imageSelected = imageO; return imageSelected;}
Debido a que las aplicaciones iOS pueden ser multiproceso, Singleton se modifica para tratar múltiples subprocesos utilizando la anotación @synchronized.
-
