私はこのパターンを何度も見て、意見を求めたかった:
オプション 1: ワイヤー オブジェクトとビジネス オブジェクトの構成について:
ワイヤ オブジェクト- シリアル化され、マシン間 (クライアント/サーバーなど) 間でやり取りされるデータ。これは 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: 変換によるワイヤー オブジェクトとビジネス オブジェクト:
これはワイヤー オブジェクトで例 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);
}
}
ここにベスト プラクティスやパターンがあるのか、それとも単にユーザーの好みの問題なのかについて、人々の意見を聞きたかったのです。