Contenido del curso
María Sierra
Kevin Toruño
Rolando Mamani Salas
Daniel Vaca
Luis Abdel Rangel Castro
Usuario anónimo
UserCarlos Eduardo Gomez García
Rolando Mamani Salas
Marines Millan
Rolando Mamani Salas
Sergio Estrella
ProfesorRolando Mamani Salas
Felipe Hermosilla Núñez
Irwin Enrique Villalobos López
Usuario anónimo
UserZakowicz Osvaldo Emanuel
Leidy Johana Alarcon Moya
Kenet Andrés Chungandro Montenegro
Rolando Mamani Salas
Jhonatan Jerson Ascárraga Blanco
Rolando Mamani Salas
Rafael Soriano Ramírez
Rolando Mamani Salas
Zakowicz Osvaldo Emanuel
Rolando Mamani Salas
Florencia Córdoba
Jimmy Buriticá Londoño
Rolando Mamani Salas
Fabiola Dayana Acarapi Alvarez
Rolando Mamani Salas
Agustin Aníbal Ducca Pantaleón
Rolando Mamani Salas
Christian David Sánchez
Rubén Maier Enzler
Royer Guerrero Pinilla
Jhon Alexander Alvarez Romero
Elisa Zamarron Muñoz
Diego Forero
Team PlatziBryson Steven Mosquera Florez
Patrones de diseño: Singleton
Estos son soluciones conceptuales que se pueden aplicar a la hora de cómo diseñar tus clases. Y existen 3 tipos de patrones:
⚠ Esto no se trata de código, sino de ayudas de cómo pensar nuestra aplicaciones.
También recuerda que estos patrones no son aplicables siempre. Son ideas que nos pueden ayudar a pensar.
Singleton
Este patrón se puede pensar como un patrón de creación o de comportamiento. La idea consiste en tener un clase que tenga una sola instancia en nuestra aplicación. Usualmente este patrón se utiliza para optimizar recursos.
Este se encarga de evitar a toda costa de exista más de una instancia. Para conseguir esto debemos hacer private el constructor. Para instanciar esta clase, crearemos una función que normalmente se llamará getInstance y está se encargará de comprobar si ya existe una instancia, si no existe una, la función la creará.
🙀 Aquí un video que explica un poco más que el video
Excelente resumen!
Muchas gracias muy buen resumen
Muchos nos habremos topado con la disyuntiva: ¿Por qué aplicar un diseño singleton si puedo hacerlo a través de una clase estática (Ej.. en C#)?. En mi experiencia un motivo es que los objetos singleton se pueden pasar como parámetros a métodos y otro es que las clases en diseño singleton pueden implementar interfaces, lo cual no es posible con las clases estáticas.
Genial!
¡Exacto!
Vale, el patrón Singleton te dice que solo puede haber una instancia en toda la aplicación y sirve para ahorrar recursos, la idea es que sus constructores sean privados y que tengan un método que retorne una instancia de la clase para asegurar que solo se está instanciando una sola vez.
Muchas gracias
Aqui el codigo de la lamina
class Singleton { private static $theInstance = null; public statis function getInstance(){ if ( self::$theInstance === null ) { self::$theInstance = new sefl(); } return self::$theInstance } privade function __contruct() { // code.. } }
Gracias
Si quieres seguir aprendiendo, por aquí te dejo un vídeo con otra implementación de Singleton :D
gracias
Un Singleton también sirve para que un método sea thread-safe.
¡Hola! ¿Me podrían explicar que significa thread-safe?
Thread-safe es un concepto de programación informática aplicable a los hilos múltiples. El código thread-safe solo manipula las estructuras de datos compartidas de una manera que garantiza que todos los hilos se comporten correctamente y cumplan con sus especificaciones de diseño sin interacción involuntaria.
:) Catálogo sobre patrones de diseño, explicados
https://www.youtube.com/watch?v=3qTmBcxGlWk&list=PLJkcleqxxobUJlz1Cm8WYd-F_kckkDvc8&ab_channel=BettaTech Por si quieren profundizar con ejemplos faciles de entender, esta es una lista de reprodiccion respecto a los patrones de diseño.
Muchas Gracias
son simplemente patrones para taeras especificas no es arquitectura
muchas gracias
La "patronitis", una enfermedad común entre developers
Muchas Gracias
Singleton:
<?php class Singleton { //propiedad privada y unica de la clase, su instancia private static $theInstance = null; //obtener la instancia singleton public static function getInstance() { //si la instancia es null, crear una nueva instancia propia if (self::$theInstance === null) { self::$theInstance = new Self(); } //si la instancia no es null, retornar la existente return self::$theInstance; } //constructor privado private function __construct() { $this->property = "hello there :)"; } } ?>
Uso
<?php require_once __DIR__.'/Singleton.php'; $singleton = Singleton::getInstance(); echo var_dump($singleton); //nos mostrará la instancia ?>
Muchas Gracias
Es útil para instanciar conexión a una base de datos
Muchas Gracias
En el curso "Curso de Patrones de Diseño en Android" esta esta clase que igual habla de singleton https://platzi.com/clases/1828-patrones-android/26795-singleton/
Muchas Gracias
Para todos aquellos que quieran profundizar más en patrones de diseño, los invito a ver este repositorio con ejemplos en PHP:
Muchas grcias
Pense que cuando te referías a los patrones de diseño eran como estándares de codificación, pero no, estas son soluciones de arquitectura de software aplicables a diferentes problemas.
No, la arquitectura tiene que ver con los recursos (sus relaciones, manejos, implementaciones, tecnologías, etc) del sistema en cuestión, es decir, es la capa lógica del proyecto. El diseño tiene la finalidad de determinar el modelo físico del proyecto, por eso los patrones de arquitectura son otra cosa.
Singleton: una clase que tenga una sola instancia en toda la aplicacion, se puede hacer limitandola dejandola privada dentro de la clase principal con una validacion anterior
¿Algún otro ejemplo para aplicar Singleton?
La implementación depende del lenguaje de programación. Por ejemplo para python sería algo como
class Singleton: __instance = None @staticmethod def getInstance(): """ Static access method. """ if Singleton.__instance == None: Singleton() return Singleton.__instance def __init__(self): """ Virtually private constructor. """ if Singleton.__instance != None: raise Exception("This class is a singleton!") else: Singleton.__instance = self
Ya depende del lenguaje que manejes, pero básicamente siempre se hace como lo realizo el profesor en la clase, se crea el método getInstance, el constructor privado.