【架构师之路】-【01设计模式】-05设计原则之接口分离原则
来源:互联网 发布:网络综合布线报价单 编辑:程序博客网 时间:2024/05/19 13:24
定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口
举例说明:接口A需要实现方法a、b、c,具体实现类B实现方法a、b,实现类C实现a、c。所以B,C需要实现它们不需要的方法。
public interface A {public void function1();public void function2();public void function3();}public class B implements A{public void function1(){system.out.print("需要实现的方法1");}public void function2() {system.out.print("需要实现的方法2");}public void function3() {system.out.print("不需要实现的方法3;但也必须实现");}}public class C implements A{public void function1(){system.out.print("需要实现的方法1");}public void function2() {system.out.print("不需要实现的方法2;但也必须实现");}public void function3() {system.out.print("需要实现的方法3");}}
以上代码实现造成了方法的多余;B类中不需要实现 方法3;但也必须实现 ;C类中不用实现方法2;但也必须实现。所以改造一下呢?
public interface A1 {public void function1();public void function2();}public interface A2 {public void function1();public void function3();}public class B implements A1{public void function1(){system.out.print("需要实现的方法1");}public void function2() {system.out.print("需要实现的方法2");}}public class C implements A2{public void function1(){system.out.print("需要实现的方法1");}public void function3() {system.out.print("需要实现的方法3");}}
将接口分为两类;A1和A2;分别包含方法f1,f2 和f1,f3;B和C分别实现A1和A2接口。不用实现多余的方法。
最后总结一下:接口分离原则 就是子类 不用实现 多余的接口方法
优点:子类不用实现过多的接口;
缺点:接口分得过细过多,导致系统复杂。
0 0
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则
- 【架构师之路】-【01设计模式】-02设计原则之单一职责原则
- 【架构师之路】-【01设计模式】-03设计原则之里式替换原则
- 【架构师之路】-【01设计模式】-04设计原则之依赖倒转原则
- 【架构师之路】-【01设计模式】-07设计原则之开闭原则
- 设计模式原则之接口隔离原则
- 面向对象设计之接口分离原则
- [设计模式]面向对象设计原则之接口隔离原则
- 【架构师之路】-【01设计模式】-06设计原则之迪米特法则
- 设计模式之接口隔离原则
- C# 设计模式之 接口隔离 原则
- 设计模式之禅-接口隔离原则
- java 设计模式之接口隔离原则
- 设计模式之接口隔离原则
- 设计模式之原则
- 设计模式之原则
- 设计模式之原则
- 设计模式之原则
- 卷积神经网络(一)
- 开源跳板机-堡垒机jumpserver安装
- python 解决No module named 'MySQLdb'的问题
- nodejs返回html代码 引入路径问题+静态文件问题
- iOS应用架构谈 网络层设计方案
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则
- Java小专题之String类
- 探索react-redux的小秘密
- InputStream与OutputStream的使用例子
- [拉格朗日插值法]拉格朗日插值法小结
- AngularJS的核心机制--脏检查
- 关于oracle连“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”
- Android中如何给layout资源文件分类 在layout下创建子文件夹
- 人工智能自动代码生成3---数据库获取代码实现1