概述
接口隔离原则----设计模式七大原则
今天又学习了设计模式的接口隔离原则,之前没怎么接触过,哈哈,只好照搬硬套来做个笔记。
基本介绍:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
我自己的简单理解就是,一个类(子类)通过接口去使用(依赖)另一个类(父类),此父类需要实现接口,但是父类为子类提供的服务方法又不需要实现接口的所有方法,以免造成浪费,此时就需要对接口进行拆分,使其满足接口隔离的原则,有点类似与代理设计模式,但是对接口进行拆分。
直接给代码演示,感兴趣的小伙伴还可以自行分析分析,一起讨论哦~
之前未符合接口隔离原则的设计模式
package com.gaoliwei.test;
interface Interface1{
void operaion1();
void operaion2();
void operaion3();
void operaion4();
void operaion5();
}
//定义类B,实现接口Interface1中的所有方法
class B implements Interface1{
@Override
public void operaion1() {
System.out.println("B实现了 operation1");
}
@Override
public void operaion2() {
System.out.println("B实现了 operation2");
}
@Override
public void operaion3() {
System.out.println("B实现了 operation3");
}
//在B类中多余的operation4和operation5方法
@Override
public void operaion4() {
System.out.println("B实现了 operation4");
}
@Override
public void operaion5() {
System.out.println("B实现了 operation5");
}
}
class D implements Interface1{
@Override
public void operaion1() {
System.out.println("D实现了 operation1");
}
//在D中多余的operaion2()和operaion3()方法
@Override
public void operaion2() {
System.out.println("D实现了 operation2");
}
@Override
public void operaion3() {
System.out.println("D实现了 operation3");
}
@Override
public void operaion4() {
System.out.println("D实现了 operation4");
}
@Override
public void operaion5() {
System.out.println("D实现了 operation5");
}
}
class A { //A类同通过接口Interface1依赖(使用)B类,但是只会用到1,2.3
public void depend1(Interface1 i){
i.operaion1();
}
public void depend2(Interface1 i){
i.operaion2();
}
public void depend3(Interface1 i){
i.operaion3();
}
}
class C { //C类同通过接口Interface1依赖(使用)D类,但是只会用到1,4,5
public void depend1(Interface1 i){
i.operaion1();
}
public void depend4(Interface1 i){
i.operaion4();
}
public void depend5(Interface1 i){
i.operaion5();
}
}
public class Segregation01 {
}
接口拆分改进之后符合接口隔离原则的设计模式
package com.gaoliwei.test;
interface Interface02{
void operation01();
}
interface Interface03{
void operation02();
void operation03();
}
interface Interface04{
void operation04();
void operation05();
}
class F implements Interface02,Interface03{ //已去除冗余方法
@Override
public void operation01() {
System.out.println("F实现了 operation1");
}
@Override
public void operation02() {
System.out.println("F实现了 operation2");
}
@Override
public void operation03() {
System.out.println("F实现了 operation3");
}
}
class H implements Interface02, Interface04{ //已去除冗余方法
@Override
public void operation01() {
System.out.println("H实现了 operation1");
}
@Override
public void operation04() {
System.out.println("H实现了 operation4");
}
@Override
public void operation05() {
System.out.println("H实现了 operation5");
}
}
class E {
public void depend01(Interface02 interface02){ //通过接口依赖实现类
interface02.operation01();
}
public void depend02(Interface03 interface03){ //通过接口依赖实现类
interface03.operation02();
}
public void depend03(Interface03 interface03){
interface03.operation03();
}
}
class G {
public void depend01(Interface02 interface02){ //通过接口依赖实现类
interface02.operation01();
}
public void depend04(Interface04 interface04){
interface04.operation04();
}
public void depend05(Interface04 interface04){
interface04.operation05();
}
}
public class Segregation02 {
public static void main(String[] args) { //进行测试
E e = new E();
G g = new G();
e.depend01(new F()); //E类通过接口去依赖F类
e.depend02(new F());
e.depend03(new F());
g.depend01(new H()); //G类通过接口去依赖H类
g.depend04(new H());
g.depend05(new H());
}
}
运行结果
F实现了 operation1
F实现了 operation2
F实现了 operation3
H实现了 operation1
H实现了 operation4
H实现了 operation5
最后
以上就是文静猎豹为你收集整理的接口隔离原则----设计模式七大原则的全部内容,希望文章能够帮你解决接口隔离原则----设计模式七大原则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复