Serie Python de productos secos: Python y patrones de diseño.

Serie Python de productos secos: Python y patrones de diseño 

2017-12-04 20:27

Primero, crea un patrón de diseño de clase

Prólogo

¿Qué tipo de programador es un buen programador? Aprende muchos lenguajes de programación, ¿es un buen programador? De hecho, aprender un lenguaje de programación no es difícil, y "aprender" un lenguaje de programación es muy difícil. La primera "reunión" enfatiza la "energía", entiende la gramática y puede escribir programas simples, incluso la primera "reunión", la última "reunión" enfatiza "refinado". Obviamente, la energía de la luz escribe "Hola mundo" no Se puede considerar como una "reunión" de este último, que se puede utilizar de manera competente y resolver varios problemas en un lenguaje de programación.

Leer detalles: http://click.aliyun.com/m/14907/

1. Python y patrones de diseño-patrón singleton

El bus es una de las soluciones de comunicación comunes para transferir datos, señales de control y otra información entre varios componentes o dispositivos funcionales de la computadora. Ahora suponga el siguiente escenario: una unidad de procesamiento central (CPU) está conectada a un semáforo a través de un determinado bus de protocolo, el semáforo tiene 64 colores que se pueden configurar y tres subprocesos se ejecutan en el procesador central, que puede controlar el semáforo, y El color de la luz de señal se puede configurar de forma independiente. Resuma los detalles del protocolo (representado por la impresión), cómo implementar la lógica de control del hilo a la señal, etc.

Agregar un bloqueo de hilo al control es, sin duda, el primer pensamiento, pero el control del bloqueo por cada hilo aumenta indudablemente el acoplamiento entre los módulos. A continuación, usamos el patrón singleton en el patrón de diseño para resolver este problema.

¿Cuál es el patrón singleton? El modo Singleton significa: garantizar que solo haya una instancia de una clase y proporcionar un punto de acceso global para acceder a ella. Específicamente en este ejemplo, el objeto de bus es un singleton, que tiene solo una instancia, y el acceso de cada subproceso al bus tiene solo un punto de acceso global, que es la única instancia.

Leer detalles: http://click.aliyun.com/m/14908/

2. Python y patrones de diseño - patrones relacionados con la fábrica

Debe haber visto un sistema de pedidos similar a la mesa de pedidos de buffet de McDonald's. En una pantalla táctil grande, hay tres tipos de alimentos para elegir: comidas principales como hamburguesas, bocadillos y bebidas. Cuando elegimos los alimentos que necesitamos, una vez completado el pago, se genera el pedido. A continuación, utilizamos el protagonista de hoy, el patrón de fábrica, para generar los temas lógicos de estos alimentos.

Leer detalles: http://click.aliyun.com/m/14909/

3. Python y patrones de diseño-patrón de construcción

El ejemplo de hoy es el sistema de pedidos de comida rápida del que hablamos la última vez. Sin embargo, hoy construimos este sistema desde la perspectiva del orden.

Leer detalles: http://click.aliyun.com/m/14910/

4. Python y patrones de diseño - patrones prototipo

Si ha utilizado un software de diseño gráfico similar a Photoshop, debe conocer el concepto de capas. El concepto de capa hace que la operación de diseño y modificación gráfica sea más conveniente. El diseñador puede modificar y dibujar el objeto de imagen actual y también puede retener otros objetos de imagen, con una lógica clara y comentarios oportunos. En esta sección, presentaremos el modo prototipo con la capa como personaje principal.

Leer detalles: http://click.aliyun.com/m/15164/

Segundo, el patrón de diseño estructural.

1. Python y modo de diseño-modo proxy

El modo proxy es un modo utilizado con mucha frecuencia, que se utiliza en muchos programas de código abierto conocidos y en muchos programas de fondo de productos de Internet conocidos. A continuación usamos un ejemplo abstracto simple para ilustrar el patrón proxy.

Leer detalles: http://click.aliyun.com/m/15329/

2. Python y patrones de diseño - patrones decoradores

Mencioné ese sistema de pedidos de comida rápida, pero hoy solo usamos una de las categorías como protagonista: las bebidas.

Además de la configuración básica, el restaurante de comida rápida puede elegir agregar hielo cuando venda cola. Si agrega hielo, debe agregar 0.3 yuanes al precio original; cuando vende leche, puede elegir agregar azúcar. Si agrega azúcar, necesita agregar 0.5 yuanes al precio original. ¿Cómo resolver tal problema? Puede elegir el modo decorador para resolver este tipo de problema.

Leer detalles: http://click.aliyun.com/m/15328/

3. Python y patrones de diseño-patrón adaptador

Supongamos que una empresa A y una empresa B necesitan cooperar, y la empresa A necesita acceder a la información del personal de la empresa B, pero la interfaz de protocolo entre la empresa A y la empresa B es diferente, ¿cómo tratarla?

Leer detalles: http://click.aliyun.com/m/36112/

4. Python y modo diseño-modo fachada

El modo de fachada, también llamado modo de apariencia, se define de la siguiente manera: la comunicación entre el exterior de un subsistema y su interior debe llevarse a cabo a través de un objeto unificado. El modo de fachada proporciona una interfaz de alto nivel, lo que hace que el subsistema sea más fácil de usar. El modo de fachada se centra en "objetos unificados", que es proporcionar una interfaz para acceder al subsistema. El modo de fachada es similar al modo de plantilla mencionado anteriormente, y es una encapsulación de algunos métodos repetidos. Pero en esencia, es diferente. El modo de plantilla es encapsular los métodos de la clase en sí, y los métodos encapsulados también se pueden usar solos; y el modo fachada es encapsular el subsistema, y ​​la interfaz encapsulada no se propondrá por separado en teoría.

Leer detalles: http://click.aliyun.com/m/36113/

5. Python y patrones de diseño - patrones combinados

El modo de combinación también se denomina modo parte-todo, que se define de la siguiente manera: combine objetos en una estructura de árbol para representar la estructura jerárquica "parte" y "todo", de modo que los usuarios tengan un uso constante de objetos individuales y objetos combinados.

Leer detalles: http://click.aliyun.com/m/15167/

6. Python y patrones de diseño: disfruta del modelo yuan

El patrón Flyweight se define de la siguiente manera: el uso de objetos compartidos admite una gran cantidad de objetos de grano fino. El soporte para compartir una gran cantidad de objetos de grano fino puede involucrar dos tipos de información sobre estos objetos: información de estado interno e información de estado externo. La información del estado interno es la información que se puede compartir. Se almacenan dentro del objeto de peso mosca y no cambiarán con el cambio del entorno específico; la información del estado externo no se puede compartir. El modelo Flyweight contiene solo información de estado interna y no debe contener información de estado externa. Esto debe tenerse en cuenta al diseñar la arquitectura empresarial.

Leer detalles: http://click.aliyun.com/m/15165/

7. Python y modo de diseño-Modo puente

El modo puente también se denomina modo puente y se define de la siguiente manera: desacoplar la abstracción y la implementación (tenga en cuenta que la abstracción y la implementación aquí no son la relación entre la clase abstracta y la clase de implementación, sino una relación de roles, que debe distinguirse aquí) , Puedes hacer que cambie de forma independiente. En el ejemplo anterior, Pen solo es responsable del dibujo, pero no hay forma, no sabe qué dibujar después de todo, por lo que lo llamamos un carácter abstracto; y Shape es una forma específica, lo llamamos un personaje materializado. El rol abstracto y el rol de realización están desacoplados, lo que significa que el llamado puente es la relación de referencia entre la clase abstracta del rol abstracto y la clase abstracta del rol de realización.

Leer detalles: http://click.aliyun.com/m/15330/

3. Patrones de diseño conductual

1. Python y patrones de diseño-patrones de estrategia

Suponga que una compañía mantiene cierta información del cliente y necesita notificar a los clientes cuando se lanzan nuevos productos o se realizan nuevos eventos en la compañía. Hay dos formas de notificar a los clientes: notificación por SMS y notificación por correo electrónico. ¿Cómo se debe diseñar la parte de notificación del cliente del sistema? Para resolver este problema, primero construimos la clase de cliente, incluida la información de contacto de uso común del cliente y la información básica, así como el contenido que se enviará.

Leer más: http://click.aliyun.com/m/15331/

2. Python y modo de diseño - modo de cadena de responsabilidad

Supongamos que existe un sistema de solicitud de licencia de este tipo: si el empleado desea solicitar dentro de los 3 días (incluidos los 3 días de licencia), solo se requiere la aprobación del gerente directo; si desea solicitar de 3 a 7 días, no solo la aprobación del gerente directo, sino también el gerente del departamento necesita ser finalizado Aprobación; si el permiso es más de 7 días, no solo los dos primeros gerentes deben aprobar, sino también la aprobación final del gerente general. Creo que todos han encontrado sistemas similares, entonces, ¿cómo lograrlo?

Leer más: http://click.aliyun.com/m/15332/

3. Python y Modo de diseño-Modo de comando

También es un sistema de pedidos (perdona el atributo de atribución de alimentos del autor). Pero esta vez el sistema de pedidos es un sistema de pedidos de restaurantes. ¿Hay alguna diferencia en el sistema de pedidos de restaurantes? Piénselo, en la mayoría de los restaurantes, cuando el camarero ha recibido el pedido del cliente y lo ha ingresado en el sistema, de acuerdo con diferentes platos, habrá diferentes reacciones de fondo. Por ejemplo, el restaurante tiene una sala de platos fríos, una sala de platos calientes y una sala de alimentos básicos. Cuando el camarero ingresa los platos en el sistema, la sala de platos fríos imprimirá el elemento de plato frío ordenado por el cliente, y la sala de platos calientes imprimirá el elemento de plato caliente ordenado por el cliente , Se imprimirá el alimento básico. ¿Cómo diseñar el modo de fondo de este sistema?

Leer detalles: http://click.aliyun.com/m/15333/

4. Python y patrones de diseño-patrón intermediario

Hay un sistema de gestión de almacenamiento móvil, el usuario tiene tres partes: ventas, gerente de almacén, compra. La demanda es: una vez que se alcanza el pedido de ventas, el personal de ventas notificará al subsistema de almacenamiento a través de la parte del sistema de ventas, el subsistema de almacenamiento reducirá la cantidad de teléfonos móviles que pueden estar fuera del almacén y al mismo tiempo notificará al subsistema de administración de compras del pedido de ventas actual; Cuando llegue por debajo del umbral, se notificará al subsistema de ventas y al subsistema de adquisiciones, y se instará al subsistema de adquisiciones a comprar; una vez completada la adquisición, el personal de adquisiciones completará la información de adquisiciones en el subsistema de adquisiciones, y el subsistema de adquisiciones notificará al subsistema de ventas la finalización de la compra El subsistema de almacén aumenta el inventario.

A partir de la descripción del requisito, cada subsistema se comunica con otros subsistemas.Al diseñar el sistema, si la operación de los otros dos subsistemas está directamente integrada en un subsistema, el acoplamiento es demasiado grande y la expansión no es fácil. Para resolver este tipo de problema, necesitamos introducir un nuevo rol de intermediario para reducir la "estructura de red" a "estructura estelar".

Dirección de lectura: http://click.aliyun.com/m/15334/

5. Python y patrones de diseño-patrones de plantilla

Invertir en acciones es una forma común de administrar el dinero. Cada vez hay más inversores en China, y la demanda de consultas de acciones en tiempo real también está aumentando. Hoy, reconocemos un patrón de diseño simple a través de un cliente de consulta de stock simple: patrón de plantilla.

Dirección de lectura: http://click.aliyun.com/m/36114/

6. Python y patrones de diseño-patrón iterador

El protagonista de hoy es el patrón iterador. En Python, los iteradores no necesitan dar demasiados ejemplos, porque hay demasiadas aplicaciones de iterador en Python (ya sea Python o muchos otros lenguajes de programación, de hecho, los iteradores se han incorporado en bibliotecas o paquetes de uso común) Medio). Y en la actualidad, casi nadie desarrolla específicamente un iterador, sino que usa directamente objetos iterables de Python como list, string, set, dict o usa directamente __iter__ y las siguientes funciones para implementar iteradores.

Leer detalles: http://click.aliyun.com/m/36115/

7. Python y patrones de diseño-patrones de visitante

Supongamos que una farmacia tiene algunos médicos, un empleado de precios de medicamentos y un administrador de farmacia, y organizan el flujo de trabajo a través de un sistema de administración de farmacias. Después de que el médico prescribe la receta, el empleado del precio del medicamento determina si el medicamento es normal y el precio es correcto; el medicamento es manejado por el administrador posterior a la farmacia. ¿Cómo se puede implementar este sistema? La idea más simple es usar un if ... else ... para implementar el proceso de procesamiento de cajeros de precios y el proceso de administración de farmacias por separado. El problema con esto es que la escalabilidad no es fuerte y la unidad no es fuerte. Hay algunos cambios en el proceso de prescripción, lo que implicará más cambios. Hoy presentamos un modelo para resolver este tipo de problema: el modelo de visitante.

Leer detalles: http://click.aliyun.com/m/36116/

8. Python y patrones de diseño-Patrón observador

En el modo de fachada, mencionamos la alarma de incendio. En ese momento, nuestro enfoque estaba en reducir la duplicación de código a través de la encapsulación. Hoy, implementaremos la alarma contra incendios nuevamente desde la perspectiva de la implementación del proceso comercial.

Leer detalles: http://click.aliyun.com/m/36117/

9. Python y patrones de diseño-patrón de intérprete

Para desarrollar un simulador de guitarra que reconozca automáticamente la partitura, puede ingresar el espectro para hacer un sonido de acuerdo con el espectro. Además del equipo de sonido (suponiendo que esté completo), lo más importante es la capacidad de leer y traducir música. Analizando sus necesidades, todo el proceso se puede dividir aproximadamente en dos partes: traducir el contenido del espectro de acuerdo con las reglas; jugar de acuerdo con el contenido traducido. Utilizamos un modelo de intérprete para cumplir esta función.

Dirección de lectura: http://click.aliyun.com/m/36118/

10. Python y modo de diseño: modo Memo

Los amigos que han jugado el juego deben saber que la mayoría de los juegos tienen una función para guardar el progreso. Si un juego se cae y te olvidas de guardar el progreso, solo podrás volver a jugar desde el último punto de progreso la próxima vez. En general, el progreso de guardado debe almacenarse en el almacenamiento persistente. En este ejemplo, se guarda en la memoria para simular la situación de realizar este escenario.

Dirección de lectura: http://click.aliyun.com/m/36119/

11. Python y patrones de diseño-patrones de estado

Los elevadores se pueden ver en todas partes a nuestro alrededor, y el centro lógico de control del elevador es realizado por el controlador del elevador. Incluso si la lógica de control del elevador es simple, el estado se divide en el estado de puerta abierta, el estado de parada y el estado de funcionamiento, y la operación se divide en apertura de puerta, cierre de puerta, funcionamiento y parada, y el proceso también es muy complicado. Primero, la puerta no se puede abrir, ejecutar o detener en el estado abierto; la puerta no se puede cerrar y detener en el estado detenido; la puerta no se puede abrir, cerrar ni operar en el estado de ejecución. Para implementar uno por uno si ... de lo contrario ..., en primer lugar, el código es confuso y no es fácil de mantener; segundo, no es fácil de expandir. En cuanto a los diversos principios de diseño ...

¿Cómo debería lograrse eso? En la lógica anterior, cada operación es solo una operación, y la conmutación de estado y la operación están separadas, lo que también provoca la "práctica" de que la operación y el estado "cooperan" entre sí. Si el estado se abstrae en una clase, y cada estado es una subclase, qué operaciones implementa y no implementa cada estado, solo la implementación específica en esta clase.

Leer más: http://click.aliyun.com/m/36120/

-FINAL-

17 artículos originales publicados · Me gusta1 · Visitas 819

Supongo que te gusta

Origin blog.csdn.net/weixin_45433031/article/details/105128986
Recomendado
Clasificación