Я вижу эту модель снова и снова и хотел бы получить мнения:
Вариант 1: На проводном объекте и Композиции бизнес-объекта:
On the wire objec t - данные, которые сериализуются и отправляются взад-вперед по машинам (клиент / сервер и т. Д.). Это объект POCO.
Например:
public class Order
{
public int Price;
public int Amount;
}
Бизнес-объекты - другой класс, который обычно имеет некоторые или все свойства в качестве объекта на проводе, но также и некоторые вычисляемые поля. При этом обычно используется композиция поверх объекта «на проводе».
public class OrderBusinessObject
{
private Order _order;
public OrderBusinessObject(Order o)
{
_order = o;
}
public int Price {return _order.Price;}
public int Amount{return _order.Amount;}
public int Total{return _order.Price * _order.Amount;}
}
Вариант 2: на проводном объекте и бизнес-объекте по разговору:
Это будет то же самое на объекте wire как в примере 1, но бизнес-объект вместо использования композиции будет использовать переводы:
public class OrderTranslator
{
public OrderBusinessObject Translate(Order o)
{
OrderBusinessObject bo = new OrderBusinessObject();
bo.Amount = o.Amount;
bo.Price = o.Price;
return bo;
}
}
public class OrderBusinessObject
{
private int _price;
private int _amount;
public int Price {return _price;}
public int Amount{return _amount;}
public int Total{return _price * _amount;}
}
Вариант 3: У вас вообще нет бизнес-объекта, и все ваши расчеты выполняются в отдельном классе калькулятора. ПРИМЕЧАНИЕ: потребители получают объект «на проводе» и калькулятор
public class Consumer
{
public void ShowTotal(Order o)
{
Calculator calc = new Calculator();
double total = calc.ShowTotal(o);
}
}
Я хотел бы узнать мнение людей о том, есть ли здесь лучшая практика или шаблон, или это просто вопрос предпочтений пользователя