Open/Closed Principle: Invita a usar las clases abstractas.
Abierto para la extensión (en el ejemplo ya existe factura , memo y recibo pero podría agregarse ticket, boleta, autorizaciones, etc) pero cerrado para la modificación, por lo tanto no se modifica nada:
(C#)
abstract class Documentos{
public abstract void Process();
}
class Factura: Documentos { }
class Recibo: Documentos { }
class Memo : Documentos { }
class Ticket : Documentos { }
class Autorizaciones : Documentos { }
class Comprobante
{
public void ComprobanteProcess(Documentos docs)
{
docs.Process();
}
}```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?