인터페이스 분리 원칙(Interface segregation principle)
- 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙
- 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리
- 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게함
- 시스템의 내부 의존성을 약화하고 유연성을 강화
public interface IUnitStats
{
public float Health { get; set; }
public int Defense { get; set; }
public void Die();
public void TakeDamage();
public void RestoreHealth();
public float MoveSpeed { get; set; }
public float Acceleration { get; set; }
public void GoForward();
public void Reverse();
public void TurnLeft();
public void TurnRight();
public int Strength { get; set; }
public int Dexterity { get; set; }
public int Endurance { get; set; }
}
이 속터지는 인터페이스를 분리 해보겠습니다.
public interface IMovable
{
public float MoveSpeed { get; set; }
public float Acceleration { get; set; }
public void GoForward();
public void Reverse();
public void TurnLeft();
public void TurnRight();
}
public interface IDamageable {...}
public interface IUnitStats {...}
public interface IExplodable {...}
public class ExplodingBarrel : MonoBehaviour, IDamageable, IExplodable {...}
public class EnemyUnit : MonoBehaviour, IDamageable, IMoveable, IUnitStats {...}