Elegante viaje de patrones de diseño - el principio de apertura y cierre

discurso de apertura

Recientemente, muchos socios pequeños carta privada me preguntaron cómo escribir una rejilla elevada fuerza hace una mirada como un buen programador para escribir código? ¿Cuál fue el código es el código estándar era? Cómo convertirse en un equipo de los estándares del código? ... y así sucesivamente, tenemos que consultar a un cierto código de front-end escrito en términos del problema, por lo que comenzó nuestro viaje patrones de diseño.

mentalidad

++ código de buenas como las gachas, hervir a cabo todo el tiempo con +

fondo

En el desarrollo de software, con el fin de mejorar la capacidad de mantenimiento y reutilización del sistema de software, el software incrementa la flexibilidad y escalabilidad, los programadores tratan de desarrollar un programa de acuerdo con los principios 7, mejorando así la eficiencia del desarrollo de software, el ahorro de desarrollo de software costos y gastos de mantenimiento. Nosotros en las próximas secciones con el fin de introducir estos siete principios, esta sección se introduce el principio de apertura y cierre.

Abierto Cerrado Principio

¿Cuál es el principio de apertura y cierre?
  • Nombre completo: la apertura y cierre original,
  • 简称: OCP (Abierto Cerrado Principio)
  • Definición: Software entidades (proyectos divididos en módulos, clases y las interfaces, métodos, etc ...) debe ser extensible
¿Cómo entender el principio de apertura y cierre de la apertura y cierre?
  • En -> entidad que es ampliar el software está abierta
    se puede ampliar cuando la función de un módulo. Cuando cambian las necesidades, tenemos que ampliarlo para cumplir con los nuevos requisitos
    , por ejemplo
    , como "ladrillo" es que tenemos una clase de paquete bueno que no necesitamos cambiar su forma y estructura, que acabamos de construir de acuerdo a la demanda edificios o muros de construcción de altura. Se puede considerar como un "ladrillo" es la demanda de extensión está abierto.
  • Cerrado -> es decir, los cambios en la entidad de software se adjunta
    el código fuente o módulo de código binario cuando se extiende, sin cambiar el módulo. Si este módulo se ha definido claramente, estable y eficiente un número de otros módulos, la relación de este módulo proporciona una interfaz para el uso en su plantilla nombre.
    Por ejemplo
    que mi ordenador portatil con nuestra CPU, placa base, memoria, y similares, no están estrechamente unidas entre sí. Si está estrechamente unida entre sí en serie equivalente, a continuación, una muy seria no es para que el equipo tendrá que re-compra es claramente irrazonable. Así que cuando nuestra memoria se rompe, sólo tenemos que ser más contenido puede también volver a utilizar el nodo actual en paralelo con daños similares no afecta a otros nodos.
El significado del principio de apertura y cierre?
  • Cuando el cambio de los requisitos de aplicación, sin modificar el código fuente de una entidad de software o código binario, se puede ampliar la funcionalidad de los módulos, para satisfacer la nueva demanda
Apertura y cierre de la función y la importancia del principio (¿por qué debería seguir el principio de apertura y cierre)?

Abierto Cerrado principio es el objetivo final de la programación orientada a objetos, que es una entidad de software tiene un cierto sentido práctico y la flexibilidad junto con la estabilidad y la continuidad.

  • Impacto en las pruebas de software
    de software sigue los principios del lado abierto de la caja, el software de prueba sólo tiene que probar el código para expandir en él, porque el petróleo crudo es todavía capaz de funcionar correctamente el código de prueba
  • Mejorar la reutilización del código
    más pequeño es el tamaño de partícula, mayor es la posibilidad de ser multiplexados; en la programación orientada a objetos, y la programación abstracta atómica puede mejorar la reutilización del código.
  • Puede mejorar la capacidad de mantenimiento de software de
    conformidad con el principio de apertura y de cierre de software, alta estabilidad y continuidad fuerte, por lo que es fácil de ampliar y mantener
La realización del principio de apertura y cierre (cómo lograr el principio de apertura y cierre)

restricciones abstractas

Principios de diseño e ideas de programación orientados a objetos en realidad se complementan entre sí, que se jugarán por la abstracción, encapsulación, herencia, polimorfismo. Abstracto es una descripción genérica de un conjunto de cosas, no hay ninguna aplicación específica, también dijo que podría tener una gran cantidad de posibilidades, puede variar con los cambios en la demanda. Por lo tanto, la interfaz o por un conjunto de clases abstractas pueden limitar el comportamiento puede cambiar, y permite extenderse abierta en la que tres significados:

  • interfaz de la clase abstracta o por las limitaciones de difusión, se define el límite extendido, el método no existe en la interfaz pública o clase abstracta no está permitido.
  • Parámetro de tipo, objetos de referencia para hacer uso de la interfaz o clase abstracta, no la clase de implementación, lo cual es un requisito importante para reemplazar el principio de Xianxian Richter (Artículo actualización Tardío)
  • capa de abstracción lo más estable posible, no una vez se determina de modificar

el comportamiento del módulo de control de metadatos

La programación es un esclavo, será el mismo programador es también un tipo muy perezosos. Los buenos programadores intentarán utilizar los metadatos para el control de los programas, reducir la duplicación de desarrollo. Qué son los metadatos? Se utiliza para describir el entorno de datos y los datos, es parámetros de configuración populares, los parámetros se pueden obtener a partir del archivo, en la base de datos también pueden obtenerse

acuerdo de proyecto de equipo

En un equipo, el establecimiento de normas del proyecto es muy importante, porque la norma es que todos los desarrolladores deben cumplir con el acuerdo, para el proyecto, la convención sobre configuración. Esto se hace de manera más eficiente que a través de la interfaz de restricción o clase abstracta, sin rastro de escalabilidad impacto.

La comprensión profunda del cambio de empaquetado

Tiene dos significados cambios en el envase (no el mismo que el muestreo y abstractas, abstracto mal no es más incómodo de lo abstracto)

  • El mismo cambio de paquete a una interfaz o clase abstracta
  • Las diferentes variantes del paquete a una interfaz diferente o clase abstracta, hay dos variaciones diferentes no deben aparecer en la misma clase abstracta o una interfaz. Cambios en los paquetes, que está protegido por los cambios, que se espera encontrar que hay un cambio o un punto inestable, se crea una interfaz de puntos estables de estos cambios
La cara de desarrollo (escenarios de uso)
  • Requisitos: Lista de los productos básicos, si es el tipo de hombres, mercancía color de fondo azul, a continuación, haga clic en el precio de los hombres emergente; si se trata de mujeres, la materia color de fondo rojo, haga clic en las marcas de las mujeres de ventanas emergentes.

código normal (para el desarrollo de procesos)

if (commodity.type === ‘男装‘) {
    commodity.css(background, blue); 
} else { 
    commodity.css(background, red); 
    
} 
// 点击事件的函数中 
if (commodity.type === ‘男装‘) { 
    // 弹出价格 
    alert(commodity.price); 
} else { 
    // 弹出品牌
    alert(commodity.brand); 
}
  • Cambios en la demanda: Producto RAN hermana pequeña para informar a añadir un tipo de mercancía, ropa infantil, mercancía con un color de fondo amarillo, a continuación, haga clic en las ventas de pop-up de ropa para niños.
if (commodity.type === ‘男装‘) { 
    commodity.css(background, blue); 
} else if (commodity.type === ‘女装‘) {
    // 修改点1 增加女装类型判断 
    commodity.css(background, red); 
} else { 
    // 修改点2 增加童装html渲染处理 
    commodity.css(background, yellow); 
} 
// 点击事件的函数中 
if (commodity.type === ‘男装‘) {
    // 弹出价格 
    alert(commodity.price); 
} else if (commodity.type === ‘女装‘) { 
    // 修改点3 增加女装类型判断 
    // 弹出价格 
    alert(commodity.brand);
} else { 
    // 修改点4 增加童装点击处理 
    // 弹出销量 
    alert(commodity.sales); 
}

Francia ha estado en el presupuesto por escrito código que habrá una gran cantidad de pares de escribir esto, de hecho, los pequeños socios de la psicología también muy nerviosa, ese código no es el primer grado de tecnología, y luego la segunda nueva demanda sin embargo, todavía juez para agregarlo? ¿Cómo puede un tercero que no tiene que modificar el código usted mismo lo fácil que algunos de?

A continuación, echamos un vistazo al código para escribir una línea con el principio de apertura y de cierre de acuerdo con esta demanda por lo que sentimos

// 抽象封装getManager
function getManager(commodity){
    if (commodity.type === ‘男装‘) return MaleManager; 
    if (commodity.type === ‘女装‘) return FemaleManager;
}
let MaleManager = { 
    Settingbackground: function () { 
        commodity.css(background, blue); 
    }, 
    Prompt: function () { 
        // 弹出价格 
        alert(commodity.price); 
    } 
}; 
let FemaleManager = { 
    Settingbackground: function () { 
        commodity.css(background, red); 
    }, 
    Prompt: function () { 
    // 弹出品牌 
    alert(commodity.brand);
    } 
};

OK, la cantidad de código como mucho, más que unos pocos objetos y métodos. . . Pero no he sentido la legibilidad del código ha aumentado, el grado de respeto para forzar la red no está por encima de un poco mejor que ver; bueno ahora hermana tan hermosa volvió a poner las necesidades del producto -> "requisito además de ropa para niños."

// 抽象封装getManager
function getManager(commodity){
    if (commodity.type === ‘男装‘) return MaleManager; 
    if (commodity.type === ‘女装‘) return FemaleManager;
    if (commodity.type === ‘童装‘) return ChildManager;
}
let MaleManager = { 
    Settingbackground: function () { 
        commodity.css(background, blue); 
    }, 
    Prompt: function () { 
        // 弹出价格 
        alert(commodity.price); 
    } 
}; 
let FemaleManager = { 
    Settingbackground: function () { 
        commodity.css(background, red); 
    }, 
    Prompt: function () { 
    // 弹出品牌 
    alert(commodity.brand);
    } 
};
let ChildManager = { 
    Settingbackground: function () { 
        commodity.css(background, yellow);
    }, 
    Prompt: function () { 
        // 弹出销量 
        alert(commodity.sales); 
    } 
};

Podemos ver la necesidad para cualquier negocio original mujeres de los hombres que no necesitan ser modificados, por lo que se realizó un proceso cerrado, tenemos que ampliar de ropa para niños, un código diseñado de acuerdo con el principio de apertura y cierre, sólo un punto de modificar, enmendar el lugar también se puede predecir, puede modificar el método de enrutamiento getManager (modificado aquí realmente evitado); a continuación, agregar un administrador de ropa para niños.

resumen

De hecho, yo escribir código o frase lema: buena código como gachas, así que cuando llegamos necesidades de negocio, tiene que aprender a pensar con el tiempo todas se reducen a cabo, cuando el pensamiento serio de ir a escribir código ;! Debemos estar abiertos a las necesidades de negocio de buena voluntad y comprensión seria de las necesidades del negocio, y luego facilitar su negocio mejor análisis de la abstracción, sino que también nos permite a cada vez mayor conciencia del paquete cuando es constante es el cambio aquellos quienes están cerrados de aquellas para ampliar ... patrón de diseño es un programador cosmética depende de cómo se está usando el maquillaje ...

Para ayudar a que el aprendizaje sea fácil, eficiente y libre para que todos puedan compartir una gran cantidad de recursos para ayudarle a convertirse en una pila completa ingenieros, arquitectos e incluso el camino a través del desorden. Estamos aquí para recomendar un círculo front-end-pila completa de aprendizaje Exchange: ?? 947 552 909, o WX:.? Fxq1221623 bienvenida a todos en los grupos de discusión y los intercambios de aprendizaje de cambio y el progreso común ?.

Algunas personas sienten pasión por el aprendizaje, pero la falta de dirección, y en el vasto océano de conocimiento en la aparentemente interminable, en este momento lo más importante es saber qué tecnologías deben centrarse manos, evitar hacer un trabajo útil, la energía limitada y maximizar Estado de.

Por último deseo lo encuentro un problema y no saben cómo hacer que los programadores de aplicaciones para usuario, deseo a todos en el trabajo futuro y entrevistar a todo lo mejor.

Publicado 35 artículos originales · ganado elogios 64 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/tjx11111/article/details/104189654
Recomendado
Clasificación