Un paquete Python con patrones de diseño de software comunes.
| construir | |
|---|---|
| paquete | |
| calidad del código |
Este repositorio aloja el código de código abierto del proyecto de patrones de software. El componente principal del proyecto es el paquete Python de software alojado en Pypi en https://pypi.org/project/software-patterns también cuenta con páginas de documentación en línea alojadas en https://software-patterns.readthedocs.io/ y un flujo de trabajo público alojado en Circleci.
¿Qué son los patrones de diseño de software?
Los ingenieros de software están empleando varios diseños y soluciones para resolver sus problemas. Los patrones emergentes (software), entre las soluciones de código, se han estudiado y formalizado en términos de cómo se usan, qué problema resuelven y por qué son un candidato adecuado para resolverlo. Estos diseños de código, que se encuentran con frecuencia en varias bases de código, se conocen como patrones de diseño de software.
El paquete de patrones de software expone un conjunto de clases de Python que permiten el uso de conviertos de patrones de diseño de software comunes.
Patrones de diseño implementados:
Instalar desde el servidor PYPI:
PIP Instalar patrones de software
Código de ejemplo para usar el patrón de fábrica en forma de un registro de clase (sub):
from software_patterns import SubclassRegistry
class MyClassRegistry ( metaclass = SubclassRegistry ):
pass
@ MyClassRegistry . register_as_subclass ( 'a' )
class ClassA :
def __init__ ( self , number ):
self . attr = number
@ MyClassRegistry . register_as_subclass ( 'b' )
class ClassB :
def __init__ ( self , number ):
self . attr = number - 1
assert MyClassRegistry . subclasses == { 'a' : ClassA , 'b' : ClassB }
instance_a = MyClassRegistry . create ( 'a' , 10 )
assert type ( instance_a ) == ClassA
assert instance_a . attr == 10
assert isinstance ( instance_a , ClassA )
instance_b = MyClassRegistry . create ( 'b' , 10 )
assert type ( instance_b ) == ClassB
assert instance_b . attr == 9
assert isinstance ( instance_b , ClassB )