设计原则之接口隔离原则的概念及实例代码操作

场景

例题:设计学生信息管理系统,有查询成绩search、修改成绩update、增加成绩insert、删除成绩delete、打印成绩print等功能

不使用接口隔离原则的解法:
在这里插入图片描述
代码实现:

public interface HandleScore {
    void insert();
    void delete();
    void search();
    void updata();
    void print();
}

public class Student implements HandleScore{
    public static void main(String[] args) {

    }
    @Override
    public void insert() {}
    @Override
    public void delete() { }
    @Override
    public void search() {}
    @Override
    public void updata() {}
    @Override
    public void print() {
        System.out.println("输出学生成绩");
    }
}
//缺点,存在接口污染
//因为学生只能查询成绩,不能修改,删除记录
//HandleScore接口存在Student不需要的方法

//家排污管理人员实现修改查询接口
public class Academic implements Updatable,Searchable,Printable {
    @Override
    public void print() {}
    @Override
    public void search() {}
    @Override
    public void updata() { }
}

存在问题:如果学生仅仅能够查询成绩,学生类Student实现这个接口,存在不需要的方法,即接口污染

接口隔离原则的概念
在这里插入图片描述
在这里插入图片描述
接口隔离原则有四个作用:
(1)避免接口污染:一个类如果要实现一个接口,那么就要实现这个接口的所有方法,如果这个接口包含这个类不需要的方法,就会造成接口污染,为系统留下隐患
(2)提高灵活性:一个类可以同时实现多个接口,所以将一个臃肿的接口分割为若干个小接口,通过小接口的不同组合可以满足更多的需求
(3)提高定制服务:通过细化接口为访问者提高需要的方法
(4)实现高内聚:高内聚就是接口、类、模块中定义了一组相关的行为。接口是对外界的承诺,承诺越少对系统的开发越有利,变更的风险也就越少,同时也有利于降低成本。通过细化接口实现高内聚。

使用接口隔离原则的解法:
在这里插入图片描述
代码实现:

//对HandleScore接口进行细化
//修改接口
public interface Modifyable{
        void delete();
        void insert();
}


//输出学生成绩接口
public interface Printable {
    void print();
}

//查询学生成绩接口
public interface Searchable {
    void search();
}


public class Student implements Searchable{

    @Override
    public void search() {

    }
}

public class Teacher implements Searchable,Updatable,Printable {
    @Override
    public void print() { }
    @Override
    public void search() {}
    @Override
    public void updata() { }
}


public interface Updatable {
    void updata();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值