Patrón de fábrica simple
Visión general
No exponga directamente los detalles de implementación de la creación de objetos al cliente, pero use una clase de fábrica para ser responsable de crear instancias de la clase de producto.
Personaje
Rol de fábrica (creador)
Función del producto abstracto (producto)
Producto de hormigón (producto de hormigón)
ejemplo
example: 最简单实现,旨在理解一些设计模式概念
from abc import ABCMeta, abstractmethod
class Animal ( metaclass= ABCMeta) :
@abstractmethod
def walk ( self) :
pass
class Rabbit ( Animal) :
def walk ( self) :
print ( "兔子行走" )
class Duck ( Animal) :
def walk ( self) :
print ( "鸭子行走" )
class AnimalFactory :
def create_animal ( self, animal_type) :
if animal_type == "rabbit" :
return Rabbit( )
if animal_type == "duck" :
return Duck( )
return None
ventaja
Detalles de implementación de la creación de objetos ocultos
El cliente no necesita modificar el código.
Desventaja
Violar el principio de responsabilidad única, integrar la lógica de creación en una clase de fábrica.
Violación del principio de apertura y cierre, el código de fábrica debe modificarse al agregar nuevos productos