前提・実現したいこと
書籍を見た所、次のような書き換えが疎結合になるらしいのですが、
コードでどのような処理をしているかわからないことと、なぜ、疎結合になるのかがわかりません。
ご教示お願い致します。
該当のソースコード
・書き換え前。
C#
1public class Player : MonoBehaviour 2{ 3 private BulletCreator _bulletCreator = new BulletCreator(); 4 5 public void CreateBulletBefore() 6 { 7 _bulletCreator.Create(); 8 } 9}
・書き換え後。
C#
1public class Player : MonoBehaviour 2{ 3 //Createメソッドを持つインターフェイス 4 private ICreator _bulletCreator; 5 6 public Player(ICreator creator) 7 { 8 _bulletCreator = creator; 9 } 10 11 public void CreateBulletAfter() 12 { 13 _bulletCreator.Create(); 14 } 15}
わかっていることと、わかっていないこと。
・書き換え前のコードに関しては、PlayerクラスのもつCreateBulletBeforeメソッドは、BulletCreatorのCreateというメソッドがないと
機能しないので、依存していることはわかる。
・書き換え後のコードに関して。
下記のコードが何をしているのかよくわかりません。
実際にPlayerクラスを生成するとき、コンストラクタにどのような引数を渡せばよいのでしょうか?
できれば具体的なコードで教えていただきたいです。
C#
1 public Player(ICreator creator) 2 { 3 _bulletCreator = creator; 4 }
・CreateBulletAfterメソッドも、_bulletCreatorのCreateというメソッドがないと機能しないように思えてしまうのですが、どのように依存性をなくしているのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。