2
5

今更インターフェースを使いだした

Last updated at Posted at 2024-03-20

始めに

この記事は覚えた内容をアウトプットした記事ですが、日記見たいな気分で書いています。
誤字脱字や覚えた内容が間違っている可能性があるので予めご了承ください。

参考にしたリンク

インターフェースでつまづいた事?

・メソッドの実装を強制させる事が出来るくらいのイメージ感だった
・利用するタイミングがよく分からなかった

インターフェースのメリット

・似たような処理を減らせる
・数値管理

インターフェースのデメリット

・クラスが増える(デメリットかも?)
・明示的な実装にしないとどれがインターフェースなのか分かりにくくなる

実装したコード

・インターフェース

public interface IMoveable
{
    /// <summary>
    /// 移動に関する処理を行う
    /// </summary>
    public void Move();
}

・インターフェースを持っているクラス

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Utility;

public class StateActionManager : MonoBehaviour, IMoveable
{
    void IMoveable.Move()
    {
        Debug.log("Move !!");
    }
}

後はIMoveableをGetComponentや何かしらで取得する事が出来れば他クラスでも利用する事が出来ます。似たような処理を書く時に便利だと思います。

他にも数値だけを管理するインタフェースも作成すると便利です。
・インタフェース

public interface IMoveParameter
{
    /// <summary>
    /// 移動速度
    /// </summary>
    public float MoveSpeed { get; }
}

・インターフェースを持っているクラス

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Utility;

public class StateActionManager : MonoBehaviour, IMoveParameter
{
    private float moveSpeed = 3;
    float IMoveParameter.MoveSpeed => moveSpeed;
}

先ほどと同じようにこのクラスのインターフェースを参照すると同じ数値が返ってきます。
もう一つ良いと思う所は他クラスからは数値を変更する事が出来ないとかですかね。

結論

・似たような処理を減らせて便利
・キャラクターの数値管理とかにも便利
(あくまで個人的にそう思っただけです。)

追記

明示的に実装したインタフェースを利用する方法がないかなと調べた所ありました。

2
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5