Red de conocimiento del abogados - Ley de patentes - ¿Qué es el patrón de diseño singleton?

¿Qué es el patrón de diseño singleton?

Pregunta 1: ¿Cuál es el patrón de diseño singleton? Modo singleton del modo Java:

El modo singleton garantiza que una clase tenga solo una instancia, proporciona esta instancia por sí misma y proporciona esto. a todo el sistema Ejemplo.

Características:

1. Una clase solo puede tener una instancia

2. Crea esta instancia tú mismo

3. Todo el sistema Para usar este ejemplo

Ejemplo: en el siguiente diagrama de objetos, hay un objeto singleton, y el Cliente A, el Cliente B y el Cliente C son los tres objetos de cliente del objeto singleton. Como puede ver, todos los objetos de cliente comparten un objeto único. Y se puede ver en la línea de conexión del objeto singleton consigo mismo que el objeto singleton tiene una referencia a sí mismo.

La función principal del modo Singleton es garantizar que solo exista una instancia de una clase Class en una aplicación Java. En muchas operaciones, como establecer conexiones de bases de datos de directorio, se requieren operaciones de un solo subproceso. Algunos administradores de recursos suelen estar diseñados en modo singleton.

Recursos externos: por ejemplo, cada computadora puede tener varias impresoras, pero solo puede haber un Printer Spooler para evitar que dos trabajos de impresión se envíen a la impresora al mismo tiempo. Cada computadora puede tener varios puertos de comunicación, y el sistema debe administrar estos puertos de comunicación de manera centralizada para evitar que dos solicitudes llamen a un puerto de comunicación al mismo tiempo. Recursos internos, por ejemplo, la mayoría del software tiene uno (o incluso varios) archivos de propiedades para almacenar las configuraciones del sistema. Un sistema de este tipo debería tener un objeto para gestionar estos archivos de propiedades.

Un ejemplo: Papelera de reciclaje de Windows.

En todo el sistema de ventanas, solo puede haber una instancia de la Papelera de reciclaje. Esta instancia única es utilizada por todo el sistema y la Papelera de reciclaje proporciona su propia instancia. Por lo tanto, la papelera de reciclaje es una aplicación única.

Dos formas:

1. Clase singleton estilo hambriento

public class Singleton {

private Singleton(){}

¿No es extraño definir una instancia de ti mismo dentro de ti mismo?

Tenga en cuenta que esto es privado solo para llamadas internas

instancia singleton estática privada = new Singleton()

Esto proporciona un método estático para acceso externo a esto. método class., al que se puede acceder directamente

public static Singleton getInstance() {

return instancia

}

}

2. Clase singleton diferida

clase pública Singleton {

instancia de Singleton estática privada = nula

Singleton estática sincronizada pública getInstance(); {

Este método es mejor que el anterior. No es necesario generar objetos cada vez. Solo genera instancias cuando

se usa por primera vez, lo que mejora la eficiencia.

if (instancia==null)

instancia=new Singleton();

devolución de instancia; >

La segunda forma es la inicialización diferida, lo que significa que el Singleton se inicializa cuando se llama por primera vez y no es necesario generarlo nuevamente en el futuro. ...gt;gt;

Pregunta 2: ¿Qué pasos se requieren para diseñar una clase en un patrón de diseño singleton? El patrón Singleton es un patrón relativamente simple.

Definición:

Asegúrese de que solo haya una instancia de una clase, que se cree una instancia automáticamente y proporcione esta instancia a todo el sistema.

Diagrama de clases general:

Código general:

La clase Singleton se denomina clase singleton. Al utilizar el constructor privado, se garantiza que solo haya una clase. generado en una aplicación. Una instancia, y se crea una instancia de sí mismo.

/**

* Modo singleton seguro para subprocesos

* Singleton estilo hambriento

* Administrador @author

p>

*

*/

public class Singleton {

private static final Singleton singleton = new Singleton(); > Limitar la generación de múltiples objetos

private Singleton() {

}

Obtener el objeto de instancia a través de este método

public static Singleton getSingleton () {

return singleton

}

Otros métodos de la clase deben ser lo más estáticos posible

public static void doSomething() {

}

}

Ventajas del modo singleton:

Dado que el modo singleton tiene solo una instancia en la memoria , Reduce la sobrecarga de memoria, especialmente cuando un objeto necesita crearse y destruirse con frecuencia y el rendimiento no se puede optimizar durante la creación o destrucción. Las ventajas del modo singleton son muy obvias.

Dado que el modo singleton solo genera una instancia, reduce la sobrecarga de rendimiento del sistema. Cuando la generación de un objeto requiere más recursos, como leer configuraciones y generar otros objetos dependientes, puede usar Generar directamente. un objeto singleton cuando se inicia la aplicación y luego resolverlo residiendo permanentemente en la memoria.

El modo singleton puede evitar la ocupación múltiple de recursos, como una acción de escritura de archivos. Dado que solo existe una instancia en la memoria, se evitan operaciones de escritura simultáneas en el mismo archivo de recursos.

El modo singleton puede establecer un punto de acceso global en el sistema para optimizar y compartir el acceso a recursos. Por ejemplo, puede diseñar una clase singleton para que sea responsable del procesamiento de mapeo de todas las tablas de datos.

Desventajas del modo singleton:

El modo singleton generalmente no tiene interfaz y la expansión es difícil. Si desea expandirse, básicamente no hay otra forma de lograrlo excepto modificando. el código.

El patrón singleton es malo para realizar pruebas. En un entorno de desarrollo paralelo, si no se completa el modo singleton, no se pueden realizar pruebas. Sin una interfaz, no se puede utilizar simulacro para virtualizar un objeto.

El patrón singleton entra en conflicto con el principio de responsabilidad única. Una clase solo debe implementar una lógica, independientemente de si es un singleton. Si es un singleton depende del entorno. El modo singleton integra "singleton" y la lógica empresarial en una clase.

Escenarios de uso del modo singleton:

Entornos que requieren la generación de números de serie únicos

Se requiere un punto de acceso compartido o * en todo el proyecto*; * No es necesario registrar los datos compartidos, como un contador en una página web, en la base de datos cada vez que se actualiza. Utilice el modo singleton para mantener el valor del contador y garantizar que sea seguro para subprocesos. >

Crear un objeto necesita consumir demasiados recursos, como acceder a IO y recursos de bases de datos.

En entornos donde se necesita una gran cantidad de constantes estáticas y métodos estáticos (como clases de herramientas); se puede definir, se puede utilizar el modo singleton (por supuesto, también se puede declarar directamente como estático).

Precauciones para el modo singleton:

1. En situaciones de alto paralelo ***, preste atención al problema de sincronización de subprocesos del modo singleton.

/**

* Singleton perezoso

* @author Administrador

*

*/

public class Singleton2 {

private static Singleton2 singleton = null

Limitar la generación de múltiples objetos

private Singleton2() {

}

...gt;

Pregunta 3: ¿Qué es el modo singleton del modo java? El patrón singleton garantiza que una clase tenga solo una instancia, proporciona esta instancia a sí misma y proporciona esta instancia a todo el sistema.

Características:

1. Una clase solo puede tener una instancia

2. Crea esta instancia tú mismo

3. Todo el sistema Para usar este ejemplo

Ejemplo: en el siguiente diagrama de objetos, hay un objeto singleton, y el Cliente A, el Cliente B y el Cliente C son los tres objetos de cliente del objeto singleton. Como puede ver, todos los objetos de cliente comparten un objeto único. Y se puede ver en la línea de conexión del objeto singleton consigo mismo que el objeto singleton tiene una referencia a sí mismo.

La función principal del modo Singleton es garantizar que solo exista una instancia de una clase en una aplicación Java. En muchas operaciones, como establecer una conexión de base de datos de directorio, se requiere una operación de un solo subproceso. Algunos administradores de recursos suelen estar diseñados en modo singleton.

Recursos externos: por ejemplo, cada computadora puede tener varias impresoras, pero solo puede haber un Printer Spooler para evitar que dos trabajos de impresión se envíen a la impresora al mismo tiempo. Cada computadora puede tener varios puertos de comunicación, y el sistema debe administrar estos puertos de comunicación de manera centralizada para evitar que dos solicitudes llamen a un puerto de comunicación al mismo tiempo. Recursos internos, por ejemplo, la mayoría del software tiene uno (o incluso varios) archivos de propiedades para almacenar las configuraciones del sistema. Un sistema de este tipo debería tener un objeto para gestionar estos archivos de propiedades.

Un ejemplo: Papelera de reciclaje de Windows.

En todo el sistema de ventanas, solo puede haber una instancia de la papelera de reciclaje. Esta instancia única es utilizada por todo el sistema y la papelera de reciclaje proporciona su propia instancia. Por lo tanto, la papelera de reciclaje es una aplicación única.

Dos formas:

1. Clase singleton estilo hambriento

public class Singleton {

private Singleton(){}

¿No es extraño definir una instancia de ti mismo dentro de ti mismo?

Tenga en cuenta que esto es privado solo para llamadas internas

instancia singleton estática privada = new Singleton()

Esto proporciona un método estático para acceso externo a esto. método class., al que se puede acceder directamente

public static Singleton getInstance() {

return instancia

}

}

2. Clase singleton diferida

clase pública Singleton {

instancia de Singleton estática privada = nula

Singleton estática sincronizada pública getInstance(); {

Este método es mejor que el anterior. No es necesario generar objetos cada vez. Solo genera instancias cuando

se usa por primera vez, lo que mejora la eficiencia.

if (instancia==null)

instancia=new Singleton();

devolución de instancia; >

La segunda forma es la inicialización diferida, lo que significa que el Singleton se inicializa cuando se llama por primera vez y no es necesario generarlo nuevamente en el futuro. ...gt;gt;

Pregunta 4: En Java, ¿qué significa el patrón de diseño singleton y cuáles son sus ventajas? Modo singleton: asegúrese de que solo haya una instancia de una clase durante el uso. La ventaja es su función. Siempre hay una sola instancia de esta clase.

Pasos: 1. Hacer que el método de construcción de esta clase sea privado

2. Crear una instancia de esta clase internamente

3. Proporcionar una interfaz para; Acceso externo.

public class SingletonDemo {

private SingletonDemo (){}; 1.

privado estático SingletonDemo mInstance = new SingletonDemo();

public static SingletonDemo getInstance(){ 3.

return mInstance

}

}

Pregunta 5: ¿Será un ¿Qué significa convertir una clase en un singleton? El patrón Singleton es un patrón relativamente simple. Definición: asegúrese de que solo haya una instancia de una clase, que se cree una instancia automáticamente y se proporcione a todo el sistema.

Pregunta 6: ¿Cuáles son los beneficios y desventajas del modelo singleton? ¿Por qué utilizar el patrón singleton? Obtenga 1 para obtener más detalles. El modo singleton solo permite la creación de un objeto, lo que ahorra memoria y acelera el acceso al objeto. Por lo tanto, es adecuado para su uso en situaciones en las que es necesario compartir el objeto, como en el caso de varios módulos que utilizan los mismos datos. fuente para conectar objetos, etc.

2 La desventaja de los singleton es que no son adecuados para cambiar objetos. Si los objetos del mismo tipo siempre cambian en diferentes escenarios de casos de uso, los singleton causarán errores de datos y no pueden. salvar los estados de cada uno.

Usar el patrón singleton es usarlo cuando sus ventajas sean aplicables.

Pregunta 7: ¿Qué es el patrón singleton de Java? La función principal del modo Singleton es garantizar que solo exista una instancia de una clase en una aplicación Java.

Generalmente, el patrón Singleton suele tener varias formas:

La primera forma: define una clase, su constructor es privado y tiene una clase privada estática cuando se crea una instancia de una variable. durante la inicialización de la clase, se obtiene una referencia a ella a través de un método público getInstance y luego se llama al método que contiene.

public class Singleton {

private Singleton(){}

¿Es extraño definir una instancia de ti mismo dentro de ti mismo?

Tenga en cuenta que esto es privado solo para llamadas internas

instancia singleton estática privada = new Singleton()

Esto proporciona un método estático para acceso externo a esto. método class., al que se puede acceder directamente

public static Singleton getInstance() {

return instancia

}

}

Segunda forma:

clase pública Singleton {

instancia de Singleton estática privada = nula

Singleton estática pública sincronizada getInstance() {

Este método es mejor que el anterior. No es necesario generar objetos cada vez. Solo genera instancias la primera vez que se usa

, lo que mejora la eficiencia.

if (instancia==null)

instancia=new Singleton();

devolución de instancia; >

Otras formas:

Defina una clase cuyo constructor sea privado y todos los métodos sean estáticos.

La primera forma generalmente se considera más segura.

Estos son conocimientos básicos de Java. Si desea obtener más información sobre los conocimientos relevantes en detalle, puede aprenderlos en segundos. Encuentra el curso correspondiente en el sitio web.

Pregunta 8: ¿Qué patrones de diseño conoces? Escriba el código de implementación del patrón singleton. ¡23 patrones de diseño en uno!

Cita del libro "Consejos de software - Patrones de diseño":

Según el propósito, los patrones de diseño se pueden dividir en patrones creativos, patrones estructurales y patrones de comportamiento.

Los patrones de creación se utilizan para tratar el proceso de creación de objetos; los patrones estructurales se utilizan para tratar la combinación de clases u objetos; los patrones de comportamiento se utilizan para describir cómo interactúan las clases u objetos y cómo asignar responsabilidades. .

El patrón de creación se utiliza para manejar el proceso de creación de objetos e incluye principalmente los siguientes cinco patrones de diseño:

? Patrón de método de fábrica

?

? Patrón constructor

? Patrón prototipo

? Patrón Singleton)

Los patrones estructurales se utilizan para tratar combinaciones de clases o objetos, e incluyen principalmente los siguientes 7 patrones de diseño:

? Patrón de adaptador (Patrón de adaptador)

? Patrón de puente

? p> ? Patrón decorador

? Patrón de fachada

? Patrón de peso mosca

? u objetos interactúan y cómo se asignan las responsabilidades, incluyendo principalmente los siguientes 11 patrones de diseño:

? Patrón de cadena de responsabilidad

?

? Patrón de intérprete

? Patrón de iterador

? Patrón de mediador

? Patrón de observador Patrón)

? Patrón de estado (Patrón de estado)

? Patrón de estrategia (Patrón de estrategia)

? Patrón

Implementación del patrón Singleton 1:

clase pública Singleton {

Clase * objeto de instancia compartida

singleton estático privado singleton = null;

Método constructor privado

private Singleton() {

System.out.println(-- ¡¡¡esto es Singleton!!!); p> }

Obtener método singleton

público sincronizado Singleton getInstance() {

Determinar si el objeto compartido es nulo. Si es nulo, cree un. nuevo objeto

if (singleton == null) {

singleton = new Singleton()

} <

/p>

return singleton;

}

}

Implementación del patrón Singleton 2:

public class Singleton { < / p>

Clase *** Creación de instancias de objetos de instancia compartida

private s...gt;gt

Pregunta 9: ¿Cuál de los 23 patrones de diseño es el diseño más importante? Los patrones generalmente se dividen en tres categorías:

Hay cinco patrones creativos: patrón de método de fábrica, patrón de fábrica abstracto, patrón singleton, patrón de constructor y patrón de prototipo.

Hay siete modos estructurales: modo adaptador, modo decorador, modo proxy, modo apariencia, modo puente, modo combinación y modo peso mosca.

Patrones de comportamiento, once tipos: patrón de estrategia, patrón de método de plantilla, patrón de observador, patrón de subpatrón iterativo, patrón de cadena de responsabilidad, patrón de comando, patrón de memo, patrón de estado, patrón de visitante, patrón de mediador, patrón de intérprete.

De hecho, hay dos categorías: modo concurrente y modo de grupo de subprocesos.

Los más utilizados son: modo fábrica, modo singleton, modo constructor y modo agente.

De hecho, es mejor entenderlos todos.

Pregunta 10: Entre los patrones de diseño, ¿cuáles son los patrones estructurales? Los patrones de diseño se dividen principalmente en tres tipos: creacionales, estructurales y de comportamiento.

Entre ellos, los tipos de creación son:

1. Singleton, modo singleton: garantiza que una clase tenga solo una instancia y proporciona un punto de acceso global para acceder a ella

2. Abstract Factory: proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases concretas.

3. Método de fábrica: define una interfaz para crear objetos y deja que la subclase decida qué clase crear una instancia. El método de fábrica retrasa la creación de instancias de una clase a la subclase.

4. Constructor, modo construcción: separa la construcción de un objeto complejo de su representación, de modo que un mismo proceso de construcción puede crear diferentes representaciones.

5. Prototipo, modo prototipo: utilice instancias de prototipo para especificar los tipos de objetos que se crearán y cree nuevos objetos copiando estos prototipos.

Los tipos de comportamiento son:

6. Iterador, patrón de iterador: proporciona un método para acceder secuencialmente a cada elemento de un objeto agregado sin exponer la representación interna del objeto.

7. Observador, patrón Observador: define una relación de dependencia de uno a muchos entre objetos. Cuando el estado de un objeto cambia, todos los objetos que dependen de él son notificados y actualizados automáticamente.

8. Método de plantilla: define el esqueleto de un algoritmo en una operación y difiere algunos pasos a las subclases. TemplateMethod permite que las subclases redefinan el algoritmo sin cambiar la estructura del algoritmo.

9. Mand, modo comando: encapsula una solicitud como un objeto, lo que le permite parametrizar clientes con diferentes solicitudes, poner en cola solicitudes y registrar registros de solicitudes, y admitir operaciones reversibles.

10. Estado, modo de estado: permite que un objeto cambie su comportamiento cuando cambia su estado interno. El objeto parece haber cambiado de clase.

11. Estrategia, patrón de estrategia: defina una serie de algoritmos, encapsúlelos uno por uno y hágalos intercambiables. Este patrón hace que los algoritmos sean independientes de los clientes que los utilizan.

12. China de Responsabilidad, modelo de cadena de responsabilidad: dando a múltiples objetos la oportunidad de procesar solicitudes, evitando así la relación de acoplamiento entre el remitente y el receptor de la solicitud.

13. Mediador , Patrón mediador: utilice un objeto mediador para encapsular una serie de interacciones de objetos.

14. Visitante, modo visitante: representa una operación que actúa sobre cada elemento en una estructura de objeto. Permite definir nuevas operaciones que actúan sobre este elemento sin cambiar la clase de cada elemento.

15. Intérprete, modo intérprete: dado un idioma, define una representación de su gramática y define un intérprete que usa la representación para interpretar oraciones en el idioma.

16. Memento, modo memo: captura el estado interno de un objeto y guarda este estado fuera del objeto sin destruirlo.

Los tipos estructurales incluyen:

17. Posite, modo de combinación: combina objetos en una estructura de árbol para representar la relación entre las partes y el todo. Posite permite a los usuarios controlar objetos individuales y combinados. Úselo con coherencia.

18. Fachada, modo de apariencia: proporciona una interfaz consistente para un conjunto de interfaces en el subsistema. Fachada proporciona una interfaz de alto nivel, lo que hace que el subsistema sea más fácil de usar.

19. Proxy, modo proxy: proporciona un proxy para que otros objetos controlen el acceso a este objeto

20. Adaptador, modo adaptador: convierte una clase de interfaces en otra interfaz que los clientes Si lo desea, el patrón Adaptador permite que trabajen juntas clases que originalmente no podían funcionar juntas debido a interfaces incompatibles.

21. Decrator, modo decoración: agrega dinámicamente algunas responsabilidades adicionales a un objeto. En términos de funciones agregadas, el modo Decorador es más flexible que generar subclases.

22. Puente, modo puente: combinando la parte abstracta con su parte de implementación...gt;gt;