キャラクタに武器を持たせるコーディングパターン

活用される知識

  • C#の基本文法
  • アクセス修飾子
  • オブジェクト指向
  • has-a
  • is-a
  • 継承
  • 抽象クラス
  • インターフェース
  • プロパティ
  • クラス図
  • Strategyパターン

環境

  • VisualStudio for Mac
  • .NET6

クラス図

コード

class Program
{
    static void Main()
    {
        Character king = new King();
        king.Weapon = new KnifeBehavior();
        king.Fight();
        king.Weapon = new SwordBehavior();
        king.Fight();
    }
}
public abstract class Character
{
    protected IWeaponBehavior? weapon;

    public void Fight()
    {
        weapon?.UseWeapon();
    }

    public IWeaponBehavior Weapon { set => weapon = value; }
}
public class King : Character
{
}
public interface IWeaponBehavior
{
    void UseWeapon();
}
public class KnifeBehavior : IWeaponBehavior
{
    public void UseWeapon()
    {
        Console.WriteLine("ナイフで切る");
    }
}
public class SwordBehavior : IWeaponBehavior
{
    public void UseWeapon()
    {
        Console.WriteLine("剣を振りかざす");
    }
}

C#,Unity

Posted by hidepon