Interface Segregation Principle

Interface Segregation Principle (ISP) starts that many client-specific interfaces are better than one general purpose interface. So you should not have to implement the methods you do not use there by providing Low Coupling and High Cohesion

High Cohesion : Keep similar and related things together.

Example

Without ISP

interface ICustomer // existing
{
    void Add();
}

interface ICustomerImproved
{
    void Add();
    void Read(); // Existing Functionality, BAD
}

With ISP:

Create a new interface, that the class can extend from

interface ICustomerV1 : ICustomer
{
    void Read();
}

class CustomerWithRead : ICustomer, ICustomerV1
{
    void Add()
    {
        var customer = new Customer();
        customer.Add(new Database());
    }

    void Read()
    {
        // GOOD: New functionality here!
    }
}

// e.g.
void ManipulateCustomers()
{
    var database = new Database();
    var customer = new Customer();
    customer.Add(database); // Old functionality, works fine
    var readCustomer = new CustomerWithRead();
    readCustomer.Read(); // Good! New functionalty is separate from existing customers
}