设计模式学习--面向对象的5条设计原则之接口隔离原则--ISP
2013-08-21 16:55
381 查看
一、ISP简介(ISP--Interface Segregation Principle):
使用多个专门的接口比使用单一的总接口要好。
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。
“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。
二、举例说明:
参考下图的设计,在这个设计里,取款、存款、转帐都使用一个通用界面接口,也就是说,每一个类都被强迫依赖了另两个类的接口方法,那么每个类有可能因为另外两个类的方法(跟自己无关)而被影响。拿取款来说,它根本不关心“存款操作”和“转帐操作”,可是它却要受到这两个方法的变化的影响。
那么我们该如何解决这个问题呢?参考下图的设计,为每个类都单独设计专门的操作接口,使得它们只依赖于它们关系的方法,这样就不会互相影了!
三、实现方法:
1、使用委托分离接口
2、使用多重继承分离接口
使用多个专门的接口比使用单一的总接口要好。
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。
“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。
二、举例说明:
参考下图的设计,在这个设计里,取款、存款、转帐都使用一个通用界面接口,也就是说,每一个类都被强迫依赖了另两个类的接口方法,那么每个类有可能因为另外两个类的方法(跟自己无关)而被影响。拿取款来说,它根本不关心“存款操作”和“转帐操作”,可是它却要受到这两个方法的变化的影响。
那么我们该如何解决这个问题呢?参考下图的设计,为每个类都单独设计专门的操作接口,使得它们只依赖于它们关系的方法,这样就不会互相影了!
三、实现方法:
1、使用委托分离接口
2、使用多重继承分离接口
相关文章推荐
- 【设计模式攻略】OO设计原则之ISP-接口隔离原则
- 设计模式学习之——六大设计原则之四:接口隔离原则
- 设计模式学习--面向对象的5条设计原则
- IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)
- 设计模式学习--面向对象的5条设计原则之单一职责原则--SRP
- IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)
- 设计模式学习--面向对象的5条设计原则之开放封闭原则--OCP
- IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)
- 设计模式学习--面向对象的5条设计原则之依赖倒置原则--DIP
- IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)
- 设计模式原则(4)--Interface Segregation Principle(ISP)--接口隔离原则
- 设计模式无限重读之接口隔离原则(ISP)
- 举例说明Java设计模式编程中ISP接口隔离原则的使用
- 设计模式学习之设计模式原则(二):依赖倒置原则和接口隔离原则
- 设计模式学习之——六大设计原则之四:接口隔离原则
- 设计模式学习--面向对象的5条设计原则之Liskov替换原则--LSP
- 设计模式学习--面向对象的5条设计原则(转)
- 6大设计模式(4):接口隔离原则
- Java设计模式——六大原则之接口隔离
- Java与设计模式(六)设计原则--接口隔离原则