Я работаю над упакованным продуктом, который, как предполагается, обслуживает несколько клиентов с различными требованиями (в определенной степени) и как таковой должен быть построен таким образом, чтобы быть достаточно гибким, чтобы настраиваться каждым конкретным клиентом. Такого рода настройка, о которой мы говорим здесь, заключается в том, что у разных клиентов могут быть разные атрибуты для некоторых ключевых бизнес-объектов. Кроме того, они могут иметь другую бизнес-логику, связанную с их дополнительными атрибутами, а также
В качестве очень упрощенного примера: Рассмотрим "Автомобиль" как бизнес-объект в системе и как таковой имеет 4 ключевых атрибута, то есть VehicleNumber, YearOfManufacture, Price и Color.
Возможно, что один из клиентов, использующих систему, добавляет еще 2 атрибута к Automobile, а именно ChassisNumber и EngineCapacity. Для этого клиента требуется определенная бизнес-логика, связанная с этими полями, чтобы проверить, что одно и то же имя chassisNumber не существует в системе при добавлении нового Automobile.
Другим клиентом нужен только один дополнительный атрибут SaleDate. SaleDate имеет собственную проверку бизнес-логики, которая проверяет, не существует ли транспортное средство в некоторых полицейских документах в качестве похищенного транспортного средства, когда введена дата продажи.
Большая часть моего опыта заключалась в основном создании корпоративных приложений для одного клиента, и я действительно изо всех сил стараюсь понять, как я могу обрабатывать бизнес-объект, атрибуты которого являются динамическими, а также имеет возможность иметь динамическую бизнес-логику, а также объектно-ориентированная парадигма
Основные проблемы
- Существуют ли какие-либо общие принципы/шаблоны OO, которые помогут мне в решении такого рода проектов?
Я уверен, что люди, которые работали с продуктами общего типа/упакованными продуктами, столкнулись бы с похожими сценариями в большинстве из них. Любые советы/указатели/общее руководство также приветствуются.
Моя технология -.NET 3.5/С#, а проект имеет многоуровневую архитектуру с бизнес-уровнем, состоящим из бизнес-единиц, которые охватывают их бизнес-логику.