
任何客户端都不应该被迫依赖它不使用的方法
考虑办公空间的示例,其中使用对象表示各种输出设备
接口隔离原则之前:
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)都有单一职责
里氏替换
由于隔离,现在所有类(实现接口)都遵循里氏替换,因为所有子类型或实现类都可以用它们的接口引用变量替换
以上就是接口隔离原则的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号