Los sistemas grandes deberían comunicarse mediante contratos claros.
public interface ISaveable
{
void Save();
void Load();
}
Otro ejemplo:
public interface IInteractable
{
void Interact();
}
if (hit.collider.TryGetComponent<IInteractable>(
out IInteractable interactable))
{
interactable.Interact();
}
El sistema de interacción no necesita conocer clases específicas.
sistema
→ interface
→ implementación concreta