Un artículo resume tres patrones de diseño (23 patrones de diseño)

Ayer presentamos los siete principios de los patrones de diseño y hoy presentamos las tres categorías específicas de patrones de diseño y 23 patrones de diseño específicos.

Visión general

Tres patrones de diseño

Los tres patrones de diseño son: creación, estructura y comportamiento.

  • El modo de creación se utiliza principalmente para describir cómo crear objetos (5 tipos)
  • El patrón estructural se utiliza principalmente para describir cómo realizar la combinación de clases u objetos (7 tipos)
  • Los patrones de comportamiento se utilizan principalmente para describir cómo interactúan las clases u objetos y cómo asignar responsabilidades (11 tipos)

El mapa mental es el siguiente:

imagen

Preste atención a la cuenta pública: java Toka Fox, responda [Modo de diseño] para obtener la imagen original en alta definición. Gracias por su atención.

Modo de creación

Modo singleton

Un patrón de diseño en el que los objetos se crean solo una vez en la memoria.

Chino hambriento
public class Singlenton{
    // 只实例化一次
    private final static Singleton INSTANCE = new Singleton();
    // 私有构造方法,防止被实例化
    private Singleton(){}
    public static Singleton getInstance(){
        return INSTANCE;   
    }
}
Perezoso (doble verificación)
public class Singleton{
    // 使用volatile修饰,让变量每次使用的时候从主存主取而不是从各个线程的“工作内存”中
    private static volatile Singleton instance;
    // 私有构造方法,防止被实例化
    private Singleton(){}
    public static Singleton getInstance(){
        if(instance == null){
            synchronized(Singleton.class){
                if(instance == null){
                    instance = new Singleton;   
                }
            }
        }
        return instance;
    }
}
Patrón de clase interna estático
public clsaa Singleton{
    // 私有构造方法,防止被实例化
    private Singleton(){}
    // 使用一个内部类来维护单例,只有在改类被加载的时候,才会实例化对象
    private static class SingletonInstance{
        private static final Singleton INSTANCE = new Singleton();
    }
    // 获取实例
    public static Singleton getInstance(){
        return SingletonInstance.INSTANCE;
    }
}
  • La versión mejorada del modelo de hombre hambriento resuelve el problema del desperdicio de recursos y también garantiza la seguridad de los subprocesos; el objeto se instancia solo cuando se carga la clase interna; en comparación con el hombre perezoso, el método de clase interna estática evita hacer cola en el bloque de sincronización. juicio nulo, y el rendimiento es mejor que el del modo de hombre perezoso, se recomienda usar
Modo de enumeración
public enum Singleton{
    INSTANCE;
    public Singleton getInstance(){
        return INSTANCE;
    }
}
  • Seguridad de subprocesos. JVM garantiza la seguridad de subprocesos y una instancia única. En escenarios de reflexión y serialización, aún se puede garantizar una instancia única.

Modo de fábrica

Modo de ingeniería simple

Cree una clase de fábrica unificada, cree diferentes objetos de acuerdo con los parámetros pasados, debe seleccionar uno de los productos en un grupo de productos.

Modo de fábrica

El patrón de fábrica no usa una clase de fábrica unificada para administrar todos los objetos, pero cada objeto tiene una fábrica diferente correspondiente.

Patrón de fábrica abstracto

El patrón de fábrica abstracto es una optimización adicional del patrón de fábrica. La clase de fábrica no solo puede crear un objeto, sino también crear un grupo de objetos.

El patrón de fábrica simple es pasar valores desde el exterior para obtener diferentes objetos.

El patrón de fábrica abstracto obtiene objetos directamente a través de métodos sin pasar valores.

Modo constructor

Separe la construcción de un objeto complejo de su representación, de modo que el mismo proceso de construcción pueda crear diferentes representaciones.

Es decir, solo se pasan los parámetros necesarios durante la construcción, y otros parámetros se pasan opcionalmente a través del método set.

Descripción
  • Cree una clase interna estática Builder en la clase y luego copie los parámetros de la clase en la clase Builder.
  • Cree un constructor privado en la clase, el parámetro es de tipo Builder
  • Cree una función de configuración en el Builder, asigne valores a esos parámetros opcionales en la clase y el valor de retorno es una instancia del tipo Builder.
  • Cree un método build () en Builder, cree una instancia de la clase en él y devuélvalo.

Modo de prototipo

Utilice instancias de prototipos para especificar los tipos de objetos que se crearán y cree nuevos objetos copiando estos prototipos. El modo de prototipo es un modo de creación de objetos.

Modelo estructural

Modo adaptador

El propósito es adaptar la interfaz

Adaptación de clases
  • Hay una clase existente que se adaptará
public class Adaptee{
    public void adapteeRequest(){
        System,out,println("被适配者的方法");
    }
}
  • Definir una interfaz de destino
public interface target{
    void request();
}
  • A través del adaptador, implemente la clase de herencia de la interfaz y luego llame al método de la clase principal.

Modo decorador

El modo de decoración permite agregar nuevas funciones a un objeto existente sin cambiar su estructura. Este tipo de patrón de diseño pertenece al patrón estructural, que sirve como envoltorio para una clase existente.

Agregue funciones dinámicamente.

Modelo de agencia

En el modelo de proxy, una clase representa la función de otra clase. Este tipo de patrón de diseño pertenece al patrón estructural; en el patrón de agente, creamos objetos con objetos existentes para proporcionar interfaces funcionales al exterior.

Principalmente dividido en proxy estático y proxy dinámico

Modo de apariencia

El modo de apariencia oculta la complejidad del sistema y proporciona una interfaz para que el cliente acceda al sistema. Este tipo de patrón de diseño es un patrón estructural, que agrega una interfaz al sistema existente para ocultar la complejidad del sistema.

Este modelo involucra una sola clase que proporciona métodos simplificados para solicitudes de clientes y llamadas delegadas a métodos de clases de sistema existentes

El modo de apariencia es poner su relación en una clase de Fachada, lo que reduce el grado de acoplamiento entre clases.

Modo Puente

El puente se utiliza para desacoplar la abstracción y la realización de modo que las dos se puedan cambiar de forma independiente. Al proporcionar una estructura de puente antes de la abstracción y la realización, se realiza el desacoplamiento de los dos.

Este modo implica una interfaz como puente, lo que hace que la función tridimensional sea independiente de la clase de implementación de la interfaz. Estos dos tipos de clases se pueden cambiar estructuralmente sin que se afecten entre sí.

Modo de combinación

Se utiliza para tratar un grupo de objetos similares como un solo objeto. El modo de combinación combina objetos de acuerdo con una estructura de árbol, que se utiliza para representar los niveles total y parcial. Este tipo de patrón de diseño es un patrón estructural. Crea una estructura de árbol de combinación de objetos.

Creó una clase que contiene su propio grupo de objetos. Esta clase proporciona una forma de modificar el mismo grupo de objetos.

Modelo de peso mosca

Se utiliza principalmente para reducir la cantidad de objetos creados para reducir el uso de memoria y mejorar el rendimiento. Este tipo de patrón de diseño es un patrón estructural, que proporciona una forma de reducir el número de objetos para mejorar la estructura de objeto requerida por la aplicación.

Intente reutilizar objetos existentes del mismo tipo y, si no se encuentra ningún objeto coincidente, cree uno nuevo.

Modelo de comportamiento

Modo de estrategia y modo de estado

Mismo punto
  • Al dividir el comportamiento y el estado en una serie de pequeños componentes, la función se reemplaza por la condición y el estado, que está más en línea con el principio de apertura y cierre, y es fácil de expandir. Además, ambos pueden usarse como una alternativa a if else o branch; el mayor apoyo El comportamiento y el estado son limitados
diferencia
  • En el modo de estrategia, la función de la clase es cambiar activamente de acuerdo con las condiciones actuales.
  • En el modo de estado, la función de la clase se cambia pasivamente del estado actual
  • No hay correlación entre cada comportamiento o algoritmo en el modo de estrategia.
  • Existe una asociación entre los estados en el patrón de estado y el estado mismo

Modo intérprete

Proporciona una forma de evaluar la gramática o la expresión del idioma. Este patrón implementa una interfaz de expresión que interpreta un contexto específico. Este modo se utiliza en análisis de SQL, motores de procesamiento de símbolos, etc.

Modo de observador

Cuando existe una relación de uno a muchos entre objetos, se utiliza el modo de observador. Por ejemplo, cuando se modifica un objeto, notificará automáticamente a los objetos dependientes

Modelo intermediario

El patrón intermedio se usa para reducir la complejidad de la comunicación entre múltiples objetos y clases. Este modo proporciona una clase intermediaria, que generalmente maneja la comunicación entre diferentes clases, admite un acoplamiento flexible y hace que el código sea fácil de mantener.

Modo de nota

Guarde un determinado estado de un objeto para restaurarlo en el momento adecuado.

Modo de comando

El modo de comando es un modo de diseño basado en datos. La solicitud se envuelve en el objeto en forma de comando y se pasa al objeto que realiza la llamada. El objeto que realiza la llamada busca un objeto adecuado que pueda manejar el comando y pasa el comando al objeto correspondiente, que ejecuta el comando.

Modelo de cadena de responsabilidad

Se crea una cadena de objetos de destinatario para la solicitud. Este modo da el tipo de solicitud y desacopla el remitente y el receptor de la solicitud.

Modo visitante

Usamos una clase de visitante, que cambia el algoritmo de ejecución de la clase de elemento. De esta manera, el algoritmo de ejecución del elemento se puede cambiar a medida que cambia el visitante. Este tipo de patrón de diseño es un patrón de comportamiento. Según el modo, el objeto de elemento ha recibido el objeto de visitante para que el objeto de visitante pueda manejar operaciones en el objeto de elemento.

Modo iterador

Es un patrón de diseño comúnmente utilizado en entornos de programación java y .net. Este modo genera acceso secuencial a los elementos del objeto de colección sin conocer la representación subyacente del objeto de colección.

Patrón de método de plantilla

Una clase abstracta define públicamente la forma / plantilla para ejecutar sus métodos. Sus subclases se pueden implementar anulando métodos según sea necesario, pero la llamada se realizará de la forma definida en la clase abstracta.

Por fin

  • Si siente que ha sido recompensado después de leerlo, espero que me apruebe. Esta será la mayor motivación para actualizar. Gracias por su apoyo.
  • Bienvenidos a todos para que presten atención a mi cuenta pública [Java Fox], enfocándome en los conocimientos básicos de Java y la computadora, prometo dejarles obtener algo después de leerlo, si no me creen, péguenme
  • Si tiene diferentes opiniones o sugerencias después de leer, por favor comente y comparta con nosotros. Gracias por su apoyo y cariño.

——Soy Chuhu, y amo la programación tanto como a ti.

imagen

Supongo que te gusta

Origin blog.csdn.net/issunmingzhi/article/details/111353707
Recomendado
Clasificación