2009-05-11 10 views
0

これはオブジェクト指向設計の方が優れていますか?オブジェクトサーチャメソッドが親オブジェクトにあるのか、オブジェクトの検索対象メソッドと同じであるべきですか?

Class User { 
    id {get;set} 
} 
Class Office { 
    id {get;set} 
    List<User> Managers(){ }//search for users, return list of them 
} 

またはこの1

Class User { 
    id {get;set} 
    List<User> Managers(){ }//search for users, return list of them 
} 
Class Office { 
    id {get;set} 
} 

答えて

2
User john; 
List<User> managers = fred.Managers(); //get managers of this user 

Office london; 
List<User> managers = london.Managers(); //get managers of this office 

は、それあなたがインスタンスを持っているのクラスのメソッドにしますインスタンスを使用してgetUsersメソッドを呼び出します。

1

私は個人的には最初のものが好きです。ユーザーはコレクションではないエンティティです。オフィスはマネージャを含むオフィスです。

おそらくUserListクラスも作成します。

public class UserList : List<User> 
{} 

class User 
{ 
    public int id {get; set;} 
    public bool IsManager { get; set;} 
} 

class Office { 
    private UserList _users; 
    UserList Managers 
    { 
     get { return (UserList) _users.FindAll(x => x.IsManager);} 
    } 
} 
3

Userにはないので、最初のソリューションは、より良いものです/どのようにOffice作品とどのように経営者のリストを取得するために知っているべきではありません。その後、ユーザーが必要と思いますので、getUsersにUserクラスの非静的メソッドを作るにはポイント:それは静的メソッドだ場合を除き

2

他の回答と同様に、私は最初の解決策を好む。結局のところ、1人のユーザはコレクションと検索の関係にどのような関係がありますか?どのようにして、クライアントはまず最初に検索するユーザーを確保しますか?

関連する問題