How do you refactor a fat interface to follow ISP?
Refactored Using ISP:
public interface IWorkable
{
void Work();
}
public interface IFeedable
{
void Eat();
}
public interface ISleepable
{
void Sleep();
}
public class Human : IWorkable, IFeedable, ISleepable
{
public void Work() { }
public void Eat() { }
public void Sleep() { }
}
public class Robot : IWorkable
{
public void Work() { }
}
✅ Now each class implements only the interfaces it needs — in line with ISP.
Inversion Principle (DIP)