Descripción general de los patrones de diseño, cómo clasificar los patrones de diseño de acuerdo con el propósito y el alcance


      Este artículo presenta principalmente conceptos de patrones de diseño, clasificación, elementos básicos, ventajas y otras características de patrones de diseño, sentando las bases para cada blog de patrones de diseño en la columna Patrón de diseño de Java Edition.
Principios de diseño orientado a objetos: https://blog.csdn.net/qq_34896730/article/details/105352240

1. ¿Qué es un patrón de diseño?

       Design Pattern (Design Pattern) es un conjunto de uso repetido, que la mayoría de la gente sabe, después de la catalogación, el resumen de la experiencia de diseño del código, el uso de patrones de diseño es hacer que el código reutilizable sea más fácil para que otros entiendan y mejoren la confiabilidad del código. Un patrón de diseño es una técnica para documentar soluciones a problemas de diseño que se repiten constantemente en los sistemas de software, y también es una técnica para compartir experiencias de diseño de expertos.
      Cuatro famosos académicos de ingeniería de software que se autodenominaron "Gang of Four (GoF, Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides)" de 1991 a 1992. Publicaron 23 tipos de Los patrones de diseño utilizados con más frecuencia en el desarrollo de software tienen como objetivo utilizar patrones para unificar la brecha entre el análisis, el diseño y la implementación de métodos orientados a objetos.
       GoF define el patrón de diseño de la siguiente manera:
       El patrón de diseño es un conjunto de soluciones personalizadas para resolver un problema de diseño de software común en un entorno específico, que describe la interacción entre objetos y clases.

2. Elementos básicos de los patrones de diseño.

      Los patrones de diseño generalmente incluyen el nombre del patrón, el problema, el propósito, la solución, el efecto, el código de ejemplo y los patrones de diseño relacionados. Los elementos clave son los siguientes cuatro.
      1. Nombre del patrón (Nombre del patrón) El
      nombre del patrón describe el problema, la solución y el efecto del patrón en una o dos palabras, con el fin de comprender mejor el patrón y facilitar la comunicación entre los desarrolladores, la mayoría de los patrones se basan en sus funciones O resultados del modelo. Al aprender patrones de diseño, primero debe recordar con precisión los nombres en chino e inglés del patrón. En las bibliotecas de clases existentes, muchos nombres de clase que usan patrones de diseño generalmente contienen el nombre del patrón de diseño utilizado. Si el nombre de clase de una clase es XXXAdapter, esta clase es una clase de adaptador, que usa el patrón del adaptador en tiempo de diseño; si el nombre de clase de una clase es XXXFactory, entonces la clase es una clase de fábrica, debe contener un método de fábrica para devolver un objeto de instancia .
      2. Problema (problema) El
      problema describe cuándo debe usarse el modo y contiene los problemas en el diseño y las razones de los problemas. Algunos de estos problemas son algunos problemas de diseño específicos, como la forma de usar objetos para encapsular el estado o usar algoritmos de representación de objetos, etc., o puede haber clases inflexibles o estructuras de objetos en el sistema, lo que resulta en un mantenimiento deficiente del sistema. A veces, la sección de descripción del problema de un patrón puede contener una serie de requisitos previos que deben cumplirse al usar el patrón. Por ejemplo, cuando se usa el modo puente, debe haber dos dimensiones de la clase que cambien independientemente en el sistema, y ​​cuando se usa el modo combinado, debe haber una jerarquía de todo y parte del sistema. Al describir el problema, en realidad determina el entorno correspondiente al patrón y la motivación para usar el patrón.
      3. Solución
      La solución describe los componentes del patrón de diseño y las interrelaciones, responsabilidades y formas de colaboración entre estos componentes. Los patrones son una plantilla universal. Se pueden usar en varias ocasiones. La solución no describe un diseño e implementación específicos y específicos, pero proporciona una descripción abstracta del problema de diseño y cómo usar una combinación de elementos de importancia general ( Combinación de clase y objeto) para resolver este problema, el usuario debe dominar el diagrama de clase, comprender el significado de cada rol en el diagrama de clase y la relación entre ellos, y debe dominar algún código central que implemente el patrón para facilitar el desarrollo real Aplicar razonablemente patrones de diseño.
      4. Efectos (Consecuencias) Los
      efectos describen los efectos de la aplicación de modo y los problemas que deben sopesarse al usar modos. El efecto incluye principalmente el análisis de las ventajas y desventajas del modelo. Necesitamos saber que ninguna solución es 100% perfecta, y se requiere una evaluación y selección razonables cuando se utiliza el modelo de diseño. Si bien un modelo tiene ventajas en algunos aspectos y puede tener defectos en otro, es necesario considerar los efectos del modelo de manera integral. Al evaluar el efecto, analice a través de los principios de diseño orientado a objetos, como juzgar si un patrón se ajusta al principio de responsabilidad individual o si se ajusta al principio de apertura y cierre.
      Además de los cuatro elementos básicos anteriores, la descripción completa del patrón de diseño generalmente incluye el alias (otros nombres) del patrón, la clasificación del patrón (la categoría a la que pertenece el patrón) y la aplicabilidad del patrón (cuando se puede usar el patrón de diseño) , Roles de patrón (es decir, participantes del patrón, clases y objetos en el patrón, y responsabilidades entre ellos), instancias de patrón (usando ejemplos para profundizar aún más la comprensión del patrón), aplicaciones de patrón (el uso del patrón en los sistemas existentes) , Expansión de modo (algunas mejoras a este modo, otros modos relacionados con él y otro conocimiento extendido), etc.

3. Clasificación de los patrones de diseño.

      Existen dos métodos generales de clasificación para los patrones de diseño:
      1. Clasificación según el propósito Los
      patrones de diseño se pueden dividir en tres tipos: creativos, estructurales y de comportamiento según el propósito (para qué se utiliza el patrón).
      (1) El modo de creación se utiliza principalmente para crear objetos. GoF proporciona 5 modos de creación, a saber, Método de fábrica, Fábrica abstracta, Constructor y Prototipo. ) Y modo singleton (Singleton).
      (2) El modo estructural se usa principalmente para tratar la combinación de clases u objetos: GoF proporciona 7 modos estructurales, a saber, modo Adaptador (Adaptador), Modo puente (Puente), Modo combinado (Compuesto), Modo decoración (Decorador) , Modo de apariencia (Fachada), Modo de elemento de vuelo (Flyweight) y Modo de proxy (Proxy).
      (3) El modo de comportamiento se usa principalmente para describir cómo interactúan las clases u objetos y cómo asignar responsabilidades. GoF proporciona 11 modos de comportamiento, a saber, Cadena de responsabilidad, modo de comando y modo de intérprete ( Intérprete), modo iterador, modo mediador, modo recuerdo, modo recuerdo, modo observador, modo estado, modo estrategia, modo método plantilla Modo de visitante (visitante).
      2. De acuerdo con el
      modo de diseño de clasificación de alcance De acuerdo con el alcance (es decir, el modo se utiliza principalmente para tratar la relación entre clases o la relación entre objetos), se puede dividir en dos tipos: modo de clase y modo de objeto.
      (1)El modelo de clase maneja la relación entre clases y subclases. Estas relaciones se establecen a través de la herencia y se determinan en tiempo de compilación. Es una relación estática.
      (2) El modelo de objetos maneja las relaciones entre objetos, estas relaciones cambian en tiempo de ejecución y son más dinámicas.

4. Introducción al patrón de diseño GoF

      En el libro clásico de GoF "Patrones de diseño: la base del software orientado a objetos reutilizables" se describen un total de 23 patrones. Estos 23 patrones se muestran en la Tabla 1, respectivamente.

Tabla 1 Lista de 23 patrones de diseño de GoF
Alcance / Propósito Modo de creación Modelo estructural Modelo de comportamiento
Patrón de clase Patrón de método de fábrica (Clase) Modo adaptador Patrón de
método de patrón de patrón interpretativo
Modo de objeto Resumen patrón de fábrica patrón
generador patrón
prototipo patrón
singleton
(Objeto) Modo Adaptador Modo
Puente Modo
Combinado Modo
Decoración Modo
Apariencia Modo
Flyover Modo
Proxy
Patrón de cadena de responsabilidad Patrón de
comando Patrón de
iterador Patrón de
mediador Patrón de
memorando Patrón de
observador Patrón de
estado Patrón de
estrategia Patrón de
visitante
Tabla 2 Una breve descripción de los 23 patrones de diseño de GoF
Categoría de modo Nombre del modo Descripción del modo
Patrones creativos Patrón abstracto de fábrica Proporcione una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas
Patrón de constructor Separe la construcción de un objeto complejo de su representación para que el mismo proceso de construcción pueda crear diferentes representaciones
Patrón de método de fábrica Defina una interfaz para crear objetos, pero permita que las subclases decidan qué clase instanciar. El patrón del método de fábrica retrasa la creación de instancias de una clase en sus subclases.
Patrón prototipo Use la instancia del prototipo para especificar el tipo de objeto que se creará, y use este prototipo para crear un nuevo objeto
Patrón Singleton Asegúrese de que solo haya una instancia de una clase y proporcione un punto de acceso global para acceder a esta instancia única
Patrones estructurales Patrón adaptador Convierta la interfaz de una clase en otra interfaz que el cliente desee. El patrón del adaptador permite que las clases con interfaces incompatibles trabajen juntas
Patrón de puente Desacoplar la parte abstracta de su parte de implementación para que ambas puedan cambiar independientemente
Patrón compuesto Combinando múltiples objetos para formar una estructura de árbol para representar una estructura jerárquica con una relación parte-todo. El modo de combinación permite al cliente tratar objetos individuales y objetos combinados de manera uniforme
Patrón decorador Agregue algunas responsabilidades adicionales al objeto dinámicamente. En términos de funcionalidad extendida, los patrones decorativos proporcionan una alternativa más flexible que el uso de subclases
Patrón de fachada Proporcione una entrada unificada para un grupo de interfaces en el subsistema. El modo de apariencia define una interfaz de alto nivel que hace que este subsistema sea más fácil de usar.
Patrón de peso mosca Uso de la tecnología de uso compartido para apoyar de manera efectiva la reutilización de una gran cantidad de objetos de grano fino
Patrón Proxy Proporcione un proxy o marcador de posición para un objeto y el objeto proxy para controlar el acceso al objeto original
Patrones de comportamiento Patrón de cadena de responsabilidad Evite acoplar el emisor y el receptor de una solicitud, conecte varios objetos en una cadena y pase la solicitud a lo largo de la cadena hasta que un objeto pueda manejarla.
Patrón de comando Encapsula una solicitud como un objeto, de modo que se puedan usar diferentes solicitudes para parametrizar el cliente, poner en cola la solicitud o registrar el registro de solicitudes y admitir operaciones reversibles
Patrón de intérprete Dado un idioma, defina una representación de su gramática y defina un intérprete que use la representación para interpretar oraciones en el idioma
Patrón de iterador Proporciona un método para acceder secuencialmente a cada elemento en un objeto agregado sin exponer la representación interna del objeto.
Patrón de mediador Defina un objeto para encapsular la interacción de una serie de objetos. El modelo intermediario hace que no sea necesario hacer referencia explícita a cada objeto, de modo que esté acoplado libremente y la interacción entre ellos se pueda cambiar de forma independiente
Patrón de recuerdo Capture el estado interno de un objeto sin destruir la encapsulación, y guarde este estado fuera del objeto, para que el objeto pueda ser restaurado al estado original guardado más tarde.
Patrón de observador Defina una relación de dependencia de uno a muchos entre objetos, de modo que cada vez que cambie el estado de un objeto, sus objetos dependientes relacionados sean notificados y actualizados automáticamente
Patrón de estado Permite que un objeto cambie su comportamiento cuando cambia su estado interno. El objeto parece modificar su clase.
Patrón de estrategia Defina una serie de algoritmos, encapsule cada algoritmo y permita que otros se reemplacen entre sí. El modelo de estrategia permite que el algoritmo cambie independientemente de los clientes que lo usan.
Patrón de método de plantilla Definir el marco del algoritmo en una operación y retrasar algunos pasos en subclases. El patrón de método de plantilla permite que las subclases redefinan ciertos pasos específicos de un algoritmo sin cambiar la estructura de un algoritmo
Patrón de visitante Representa una operación que actúa sobre cada elemento en la estructura del objeto. El patrón de visitante puede definir nuevas operaciones en estos elementos sin cambiar la clase de cada elemento.
      Cabe señalar que estos 23 patrones de diseño no existen de forma aislada, y existen vínculos entre muchos patrones. Por ejemplo, cuando los elementos operativos en el objeto dan como resultado el patrón de visitante, generalmente es necesario usar el patrón de iterador y definir la terminación en el patrón de intérprete Las expresiones simbólicas y las expresiones no terminales pueden usar patrones combinados; además, puede diseñar el mismo sistema combinando dos o más patrones, haciendo pleno uso de las ventajas de cada patrón mientras les permite trabajar juntos para completar algunos Trabajo de diseño más complicado.

5. Ventajas de los patrones de diseño.

      El patrón de diseño es un plan de diseño exitoso que se puede lograr mediante la mantenibilidad y la reutilización de muchos sistemas de software excelentes. El uso de estos planes evitará hacer un trabajo repetitivo y puede diseñar un sistema de software de alta calidad. Específicamente, las ventajas de los patrones de diseño son las siguientes:

      (1) 设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通过的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案,设计模式可以降低开发人员理解系统的复杂度。
      (2) 设计模式使人们可以更加简单、方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。
      (3) 设计模式使得设计方案更加灵活,且易于修改。在很多设计模式中广泛使用了开闭原则、依赖倒转原则、迪米特法则等面向对象设计原则,使得系统具有较好的可维护性,真正实现可维护性的复用。在软件开发中合理地使用设计模式可以使系统中的一些组成部分在其他系统中得以重用,而且在此基础上进行二次开发很方便。正因为设计模式具有该优点,所以在JDK、Struts、Spring、Hibernate、JUnit等类库和框架的设计中大量使用了设计模式。
      (4) 设计模式的使用将提高软件系统的开发效率和软件质量,并且在一定程度上节约设计成本。设计模式是一些通过多次实践得以证明的行之有效的解决方案,这些解决方案通常是针对某一类问题最佳的设计方案,因此可以帮助设计人员构造优秀的软件系统,并可以直接重用这些设计经验,节省系统设计成本。
      (5) 设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件饿设计水平和代码质量。

发布了59 篇原创文章 · 获赞 20 · 访问量 3622

Supongo que te gusta

Origin blog.csdn.net/qq_34896730/article/details/105324092
Recomendado
Clasificación