このコードですが、インターフェースを使って依存性逆転の法則を守ろうと(?)しています。
このコードのMain()内で、プロパティに名前や攻撃力を代入してしまっているのですが、ここでも new の後にインターフェース等(?)を使わないと依存性の注入ができていないということでしょうか?それともこの時点で注入は十分にされてると思いますか?
ご意見をください。
ちなみに私はインタフェースや依存性などを全然理解できていなく勉強中なので、トンチンカンな質問でしたらすみません。
C#
1interface IEnemies{ 2 string Name{ get; set; } 3 int HP { get; set; } 4 } 5 interface IBullets{ 6 string Name { get; set; } 7 int AttackPoint { get; set; } 8 } 9 interface IHIT{ 10 int HIT(string Name, int HP, int AttackPoint); 11 } 12 public class Player{ 13 public class Bullet : IBullets{ 14 public string Name { get; set; } 15 public int AttackPoint { get; set; } 16 public Bullet(string name, int attackpoint){ 17 this.Name = name; 18 this.AttackPoint = attackpoint; 19 } 20 public class BulletHit : IHIT{ 21 public int HIT(string Name,int HP,int AttackPoint){ 22 HP -= AttackPoint; 23 Console.WriteLine("プレイヤーの弾が{0}に当たりました",Name); 24 return HP; 25 } 26 } 27 }//Bullet 28 }//Player 29 public class Enemy : IEnemies{ 30 public string Name{ get; set; } 31 public int HP { get; set; } 32 33 public Enemy(string name,int hp){ 34 this.Name = name; 35 this.HP = hp; 36 } 37 38 } 39 public class Boss : IEnemies{ 40 public string Name{ get; set; } 41 public int HP { get; set; } 42 43 public Boss(string name, int hp){ 44 this.Name = name; 45 this.HP = hp; 46 } 47 } 48 public class Test{ 49 public static void Main(){ 50 IBullets B1 = new Player.Bullet("普通の弾",25); 51 IEnemies E1 = new Enemy("エネミー1",200); 52 IEnemies BOS1 = new Boss("1面のボス", 500); 53 IHIT IHIT = new Player.Bullet.BulletHit(); 54 55 Console.WriteLine("{0}のHPは{1}, 弾の攻撃力は{2}",E1.Name,E1.HP,B1.AttackPoint); 56 E1.HP = IHIT.HIT(E1.Name,E1.HP,B1.AttackPoint); 57 Console.WriteLine("{0}の残りHPは{1}",E1.Name ,E1.HP); 58 59 Console.WriteLine("{0}のHPは{1}, 弾の攻撃力は{2}",BOS1.Name,BOS1.HP,B1.AttackPoint); 60 BOS1.HP = IHIT.HIT(BOS1.Name,BOS1.HP,B1.AttackPoint); 61 Console.WriteLine("{0}の残りHPは{1}",BOS1.Name ,BOS1.HP); 62 BOS1.HP = IHIT.HIT(BOS1.Name,BOS1.HP,B1.AttackPoint); 63 Console.WriteLine("{0}の残りHPは{1}",BOS1.Name ,BOS1.HP); 64 } 65 }
また、例えばクラスの内部にクラスを作るのはやめた方がいいよ!とか、クラスの上下関係など、アドバイス等あると助かります。
抽象的な質問ですみません。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー