前提
依存性の注入について勉強しています。
練習でコードを書いていて変に思った部分があり、勉強の過程で何かを見逃している気がするので助言をいただきたいと思い質問させていただきました。
具体的に変に思ったのは依存性を注入したクラスをオブジェクト化する時のコードです。
以下のコードは説明のためのサンプルコードです。
サンプルコード
Csharp
1public interface IService 2{ 3 string GetInfomation(); 4} 5 6public class SomethingService : IService 7{ 8 public string GetInfomation() 9 { 10 return "Something"; 11 } 12} 13 14public interface ISpeaker 15{ 16 string Introduce(); 17} 18 19public class User : ISpeaker 20{ 21 private IService _service; 22 23 public User(IService service) 24 { 25 _service = service; 26 } 27 28 public string Introduce() 29 { 30 return "I use a" + _service.GetInfomation(); 31 } 32}
質問
上記のようなコードを作りました。
Userのオブジェクトを作るとき
Csharp
1new User(new SomethingService())
という感じにすると思いますが、例えばIUserの依存性を持つクラス(例えばUserManagerがあったとすれば)のオブジェクトを作るときは
Csharp
1new UserManager(new User(new SomethingService()))
という感じなってオブジェクト化するときに長い列ができて変に感じます。
これが普通なのでしょうか。もしくはこれを回避する方法があるのでしょうか。
また、このオブジェクト化するときのサンプルコードがある記事の探し方が分からず困っていました。
これに関する専門用語などがあれば教えていただきたいです。(日本語|英語 どちらの用語でもかまいません)
回答2件
あなたの回答
tips
プレビュー