現在のビジネスロジックレイヤメソッドをIOCにどのように変換しますか?現在のビジネス層をIOCスタイルに変換するにはどうすればよいですか?
public static List<User> GetUsers()
{
MyDBProvider db = new MyDBProvider();
return db.GetUsers();
}
現在のビジネスロジックレイヤメソッドをIOCにどのように変換しますか?現在のビジネス層をIOCスタイルに変換するにはどうすればよいですか?
public static List<User> GetUsers()
{
MyDBProvider db = new MyDBProvider();
return db.GetUsers();
}
List<User> users = GetUsers(new MyDbProvider());
List<User> GetUsers(IDataProvider provider){
return provider.GetUsers();
}
私はおそらく静的メソッドを取り除くとスターターのためのより多くのオブジェクト指向のアプローチを使用して取得したいです。
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 { ... }
"パブリッククラスMyDbProviderはDBProvider {...}" ----> "パブリッククラスMyDbProvider:DBProvider {...}"を実装しています。少なくともC#で。 –
しかし、最も美しいのはIoCコンテナを使うことです。 –
コレクションリストもまた何らかのインターフェースを使用する必要がありますか? –
Blankman
これは、呼び出し元のメソッドがデータを期待する形式によって異なります。リストの代わりにUser []、IList IEnumerable などを選ぶことができます。IoC(制御の反転)とは基本的に、外部からメソッドの動作を変更することを意味します。返されるデータ型。 –