¿Cómo diseñar una entidad comercial genérica y seguir siendo OO?

Estoy trabajando en un producto empaquetado que se supone que abastece a múltiples clientes con diferentes requisitos (hasta cierto punto) y, como tal, debe construirse de manera que sea lo suficientemente flexible como para que cada cliente específico pueda personalizarlo. El tipo de personalización de la que estamos hablando aquí es que los diferentes clientes pueden tener diferentes atributos para algunos de los objetos comerciales clave. Además, podrían tener diferentes lógicas comerciales vinculadas con sus atributos adicionales también

Como un ejemplo muy simplista: Considere que "Automóvil" es una entidad comercial en el sistema y, como tal, tiene 4 atributos clave, es decir, Número de vehículo, Año de fabricación, Precio y Color.

Es posible que uno de los clientes que usan el sistema agregue 2 atributos más a Automobile, a saber, ChassisNumber y EngineCapacity. Este cliente necesita cierta lógica de negocios asociada con estos campos para validar que el mismo número de chasis no existe en el sistema cuando se agrega un nuevo automóvil.

Otro cliente solo necesita un atributo adicional llamado SaleDate. SaleDate tiene su propia verificación de lógica de negocios que valida si el vehículo no existe en algunos registros policiales como un vehículo robado cuando se ingresa la fecha de venta

La mayor parte de mi experiencia se ha centrado principalmente en crear aplicaciones empresariales para un solo cliente y realmente estoy luchando por ver cómo podría manejar una entidad comercial cuyos atributos son dinámicos y también tiene la capacidad de tener una lógica comercial dinámica y un paradigma orientado a objetos.

Cuestiones clave

¿Hay algún principio / patrón general de OO que me ayude a abordar este tipo de diseño?

Estoy seguro de que las personas que han trabajado en productos genéricos / envasados habrían enfrentado escenarios similares en la mayoría de ellos. Cualquier consejo / punteros / orientación general también es apreciado.

Mi tecnología es .NET 3.5 / C # y el proyecto tiene una arquitectura en capas con una capa empresarial que consta de entidades comerciales que abarcan su lógica empresarial

Respuestas a la pregunta(7)

Su respuesta a la pregunta