接口隔离原则

接口隔离原则

任何客户端都不应该被迫依赖它不使用的方法

考虑办公空间的示例,其中使用对象表示各种输出设备

接口隔离原则之前

i多功能接口

/** * @imultifunction interface has methods related to all output devices present in office space * for devices like printer, scanner, fax machines, etc*/public interface imultifunction {    public void print();    public void getprintspooldetails();    public void scan();    public void scanphoto();    public void fax();    public void internetfax();}

现在为各种设备实现上述通用接口

具有所有功能的 xeroxworkcenter 类

/** *  * you must have seen xerox work station device which has all the features in one like printing, scanning, xerox, * fax etc*/public class xeroxworkcenter implements imultifunction {    @override    public void print() {        // real printing code    }    @override    public void getprintspooldetails() {        // real get print spool details code    }    @override    public void scan() {        // read scanning code    }    @override    public void scanphoto() {        // real scan photo code     }    @override    public void fax() {        // real fax code    }    @override    public void internetfax() {        // real internet fax code    }}

hpprinternscanner 类具有打印和扫描功能

易优微信工程机械小程序模板 易优微信工程机械小程序模板

易优小程序是基于前端开源小程序+后端易优cms+标签化API接口,是一套开源、快速搭建个性化需求的小程序CMS。轻量级TP底层框架,前后端分离,标签化API接口可对接所有小程序,支持二次开发。即使小白用户也能轻松搭建制作一套完整的线上版小程序。微信工程机械小程序模板主要特点:1、代码开源,支持二次修改。2、微信原生写法,兼容性更好,代码可读性更强。3、功能接口完整,支持eyoucms大部分功能ap

易优微信工程机械小程序模板 0 查看详情 易优微信工程机械小程序模板

public class hpprinternscanner implements imultifunction {    @override    public void print() {        // real printing code    }    @override    public void getprintspooldetails() {        // real get print spool details code    }    @override    public void scan() {        // read scanning code    }    @override    public void scanphoto() {        // real scan photo code     }    //since hpprinternscanner has only printing and scanning abilities fax() and internetfax() will have empty body    @override    public void fax() {}    @override    public void internetfax() {}}

canonprinter 类只有打印功能

public class canonprinter implements imultifunction {    @override    public void print() {        // real printing code    }    @override    public void getprintspooldetails() {        // real get print spool details code    }    //since the canonprinter has only printing ability rest of the method will have an empty body    @override    public void scan() {}    @override    public void scanphoto() {}    @override    public void fax() {}    @override    public void internetfax() {}}

isp违规识别技巧

胖接口(具有两个多方法声明的接口)低内聚的接口(具有不太可能彼此相关的方法的接口)*空方法实现*(当类被迫实现他们不使用的方法时,他们将方法的实现留空)

接口隔离原则之后:

public interface iprint {    public void print();    public void getprintspooldetails();}
public interface iscan {    public void scan();    public void scanphoto();}
public interface ifax {    public void fax();    public void internetfax();}
/** *  * you must have seen the xerox workstation device which has all the features in one like printing, scanning, xerox, fax, etc.*/public class xeroxworkcenter implements iprint,iscan,ifax {    @override    public void print() {        // real printing code    }    @override    public void getprintspooldetails() {        // real get print spool details code    }    @override    public void scan() {        // read scanning code    }    @override    public void scanphoto() {        // real scan photo code ̰    }    @override    public void fax() {        // real fax code    }    @override    public void internetfax() {        // real internet fax code    }}
public class hpprinternscanner implements iprint,iscan {    @override    public void print() {        // real printing code    }    @override    public void getprintspooldetails() {        // real get print spool details code    }    @override    public void scan() {        // read scanning code    }    @override    public void scanphoto() {        // real scan photo code     }}
public class CanonPrinter implements IPrint {    @Override    public void print() {        // real printing code    }    @Override    public void getPrintSpoolDetails() {        // real get print spool details code    } }

每个接口都有一个单一的职责,并且现在更加干净。

isp 与其他 solid 原则的关系

单一责任
将接口划分为不同的接口后,现在所有接口(例如 iprint、iscan)都有单一职责

里氏替换
由于隔离,现在所有类(实现接口)都遵循里氏替换,因为所有子类型或实现类都可以用它们的接口引用变量替换

以上就是接口隔离原则的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1010672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 00:01:25
下一篇 2025年12月2日 00:01:46

相关推荐

发表回复

登录后才能评论
关注微信