2009-03-09 12 views
1

私は手近なシナリオを持っていますが、これにはいくつかのデザインディスカッションがあります。簡単な言葉でそれを分解するために、 会社-----顧客------>注文 (注文がどのように製品を持っているかなどの詳細は無視してください) 私が公開するならばこれに対応するAPI、より良い設計となるものより良いデザインは何ですか?

A)

Dim comp As New Company 
comp.GetInfo(123) 
Dim cust As New Customer 
cust.Name= "CustomerName" 
comp.Add(cust) 

b)のオブジェクトを使用する必要があるIDを使用して

Dim custhand As Customerhandler 
Dim cust As New Customer 
cust.Name= "CustomerName" 
custhand.AddCustomer(cust,123) ''123 is CompanyID 

答えて

1

A.は悪い考えです。

1

2つの中から選択すると、Aを選択すると、CustomerHandlerを追加すると、会社または顧客が会社に顧客を追加する方法を知っている必要があります。

0

私はポイントに最も直接的であるので、最初の方法を好む。会社オブジェクトを作成して顧客を追加します。意味をなさない

第2の方法は、物事をより理解しにくくし、手続きをより簡単にする「er」オブジェクトを導入しています。

0

A. custオブジェクトには、IDが含まれている必要があります。

Customer.AddCustomer(string, int)オーバーロードに興味があり、特定の名前とIDで新しい顧客を作ることはできますが、情報の格納方法によって異なります。

8

私は(A)と一緒に行くと思いますが、私は(これに新しい共有メソッドを追加...

Dim comp As Company = Company.Get(123) 

...に

Dim comp As New Company 
comp.GetInfo(123) 

を変更するために傾斜させることだろう会社の特定のインスタンスを返す会社のクラス)

+0

ああ、あなたは私にそれを打つ:P +1 – rmeador

+0

ここの利点は、明白ではない場合は、無効な(すなわち、アンロードされた)会社のオブジェクトを蹴ることはありませんまわり。あなたはそれについてGetInfo()関数などを呼び出すことを忘れることはできません。 – rmeador

+0

+1ファクトリパターンの使用法 –