2009-05-13 8 views

答えて

3
List<User> users = GetUsers(new MyDbProvider()); 

List<User> GetUsers(IDataProvider provider){ 
    return provider.GetUsers(); 
} 
+0

コレクションリストもまた何らかのインターフェースを使用する必要がありますか? – Blankman

+0

これは、呼び出し元のメソッドがデータを期待する形式によって異なります。リストの代わりにUser []、IList IEnumerable などを選ぶことができます。IoC(制御の反転)とは基本的に、外部からメソッドの動作を変更することを意味します。返されるデータ型。 –

0

私はおそらく静的メソッドを取り除くとスターターのためのより多くのオブジェクト指向のアプローチを使用して取得したいです。

public class UserRepository { 
    private DBProvider provider; 

    public DBProvider getProvider() { return provider; } 
    public void setProvider(DBProvider provider) { this.provider = provider; } 

    public List<User> getUsers() { return getProvider().getUsers(); } 
} 

public interface DBProvider { 
    List<User> getUsers(); 
} 

public class MyDbProvider implements DBProvider { ... } 
+0

"パブリッククラスMyDbProviderはDBProvider {...}" ----> "パブリッククラスMyDbProvider:DBProvider {...}"を実装しています。少なくともC#で。 –

+1

しかし、最も美しいのはIoCコンテナを使うことです。 –

関連する問題