Los diagramas de estructura y las definiciones de 23 patrones de diseño se resumen aquí, y el código de muestra está en Github: studeyang/design-pattern .
1. Modo de creación
1.1 Patrón de fábrica simple
1.2 Patrón de método de fábrica
El patrón del método de fábrica define una interfaz para crear objetos y permite que las subclases decidan qué clase instanciar. Los métodos de fábrica difieren la instanciación de una clase a sus subclases.
1.3 Patrón de fábrica abstracto
El patrón de fábrica abstracto proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases concretas.
1.4 Patrón de prototipo
Modo de prototipo, utilizando instancias de prototipo para especificar el tipo de objeto que se creará y creando nuevos objetos copiando estos prototipos.
1.5 Modo constructor
El patrón constructor separa la construcción de un objeto complejo de su representación para que el mismo proceso de construcción pueda crear diferentes representaciones.
1.6 Modo singleton
El patrón singleton asegura que una clase tenga solo una instancia y proporciona un punto de acceso global para acceder a ella.
2. Modelo estructural
2.1 Modo adaptador
El patrón de adaptador convierte la interfaz de una clase en otra interfaz que el cliente quiere. El patrón Adapter permite que las clases que de otro modo no funcionarían juntas debido a interfaces incompatibles trabajen juntas.
2.2 Modo puente
El patrón puente, que separa la abstracción de su implementación para que ambas puedan variar de forma independiente.
2.3 Modo de combinación
Modo compuesto, que compone objetos en una estructura de árbol para representar una jerarquía de "parte-todo". El modo compuesto permite a los usuarios utilizar objetos individuales y objetos compuestos con consistencia.
2.4 Modo de decoración
El modo de decoración agrega dinámicamente algunas responsabilidades adicionales a un objeto En términos de agregar funcionalidad, el modo de decoración es más flexible que la generación de subclases.
2.5 Modo de apariencia
El modo de apariencia proporciona una interfaz consistente para un conjunto de interfaces en el subsistema.Este modo define una interfaz de alto nivel que hace que el subsistema sea más fácil de usar.
2.6 Modo de peso mosca
El modo Flyweight utiliza tecnología compartida para admitir de manera efectiva una gran cantidad de objetos de grano fino.
2.7 Modo proxy
El modo proxy proporciona un proxy para que otros objetos controlen el acceso a este objeto.
3. Patrones de comportamiento
3.1 Modo intérprete
El patrón de intérprete, dado un idioma, define una representación de su gramática y define un intérprete que usa esta representación para interpretar oraciones en el idioma.
3.2 Patrón de método de plantilla
El patrón Template Method, que define el esqueleto de un algoritmo en una operación, delegando algunos pasos a las subclases. El método de plantilla permite que las subclases redefinan algunos pasos específicos de un algoritmo sin cambiar la estructura del algoritmo.
3.3 Patrón de estrategia
Escenario: Promoción de centro comercial. Aunque el modelo de fábrica simple también puede resolver este problema, este modelo solo resuelve el problema de la creación de objetos, y debido a que la propia fábrica incluye todos los métodos de cobro, es posible que el centro comercial cambie el monto del descuento y el monto del reembolso con frecuencia, y cobre por cada mantenimiento o expansión La fábrica debe cambiarse de alguna manera. Así que no es la mejor manera.
Ante los frecuentes cambios en el algoritmo, debería haber una mejor manera.
Modo estrategia: Define la familia de algoritmos y los encapsula por separado para que puedan ser reemplazados entre sí, este modo permite que los cambios en el algoritmo no afecten a los clientes que utilizan el algoritmo.
3.4 Patrón de observador
El patrón Observer define una dependencia de uno a muchos, lo que permite que varios objetos de observador controlen un objeto sujeto al mismo tiempo. El objeto sujeto notifica a todos los objetos observadores los cambios de estado, lo que les permite actualizarse automáticamente.
3.5 Modo Estado
El patrón de estado, que permite cambiar el comportamiento de un objeto cuando cambia su estado interno, el objeto parece cambiar su clase.
3.6 Modo de memoria
Memo: Capture el estado interno de un objeto y guarde ese estado fuera del objeto sin romper la encapsulación. Esto permite restaurar el objeto a su estado guardado anteriormente más tarde.
3.7 Patrón de iterador
El patrón iterador proporciona una forma de acceder secuencialmente a los elementos de un objeto agregado sin exponer la representación interna del objeto.
3.8 Modo de comando
Modo de comando, que encapsula una solicitud como un objeto, para que pueda parametrizar clientes con diferentes solicitudes: solicitudes en cola o registros de solicitudes de registro, y admitir operaciones que se pueden deshacer.
3.9 Modelo de Cadena de Responsabilidad
El patrón Cadena de responsabilidad permite que múltiples objetos tengan la oportunidad de procesar solicitudes, evitando así la relación de acoplamiento entre el remitente y el receptor de la solicitud. Vincule los objetos en una cadena y pase la solicitud a lo largo de la cadena hasta que un objeto la maneje.
3.10 Modo intermediario
El patrón Mediator utiliza un objeto intermediario para encapsular una serie de interacciones de objetos. Los mediadores eliminan la necesidad de que los objetos se refieran explícitamente entre sí, lo que los hace poco acoplados y sus interacciones se pueden cambiar de forma independiente.
3.11 Modo Visitante (adjunto)
El patrón Visitor representa una operación sobre los elementos de una estructura de objeto. Le permite definir nuevas operaciones en elementos sin cambiar su clase.