zoukankan      html  css  js  c++  java
  • 设计模式系列之七大原则之——接口隔离原则

    接口隔离原则:

    一个类不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口之上

    这句话理解起来可能表晦涩,我们来举个例子对比说明一下就立刻明白什么叫“接口隔离原则”了

     1 //接口A
     2 interface A{
     3     void a();
     4     void b();
     5     void c();
     6     void d();
     7 }
     8 
     9 //B实现了接口A,但是B实际上仅仅需要a和b两个方法,而c和d根本就用不到
    10 class B implements A{
    11     @Override
    12     public void a() {
    13         System.out.println("a方法B类需要");
    14     }
    15     @Override
    16     public void b() {
    17         System.out.println("b方法B类需要");
    18     }
    19     @Override
    20     public void c() {
    21         System.out.println("c方法B类不需要");
    22     }
    23     @Override
    24     public void d() {
    25         System.out.println("d方法B类不需要");
    26     }
    27 }
    28 
    29 //B实现了接口A,但是B实际上仅仅需要a和b两个方法,而c和d根本就用不到
    30 class D implements A{
    31     @Override
    32     public void a() {
    33         System.out.println("a方法D不需要");
    34     }
    35     @Override
    36     public void b() {
    37         System.out.println("b方法D类不需要");
    38     }
    39     @Override
    40     public void c() {
    41         System.out.println("c方法D类需要");
    42     }
    43     @Override
    44     public void d() {
    45         System.out.println("d方法D类需要");
    46     }
    47 }

    以上是没有遵循接口隔离原则的,我们发现接口A里面有a、b、c、d四个方法,同时B和D都实现了A接口,但是B类只要a和b两个方法,D类只需要d和c两个方法,也就是说这个时候对于B类而言c和d完全是没有用的,同理对于D而言a和b方法完全是没用的。这样的设计显然是不合理的。

    下面遵循接口隔离原则重新设计接口

     1 interface A{
     2     void a();
     3     void b();
     4 }
     5 interface C{
     6     void c();
     7     void d();
     8 }
     9 class B implements A{
    10 
    11     @Override
    12     public void a() {
    13         
    14     }
    15 
    16     @Override
    17     public void b() {
    18 
    19     }
    20 }
    21 
    22 
    23 class D implements C{
    24 
    25     @Override
    26     public void c() {
    27         
    28     }
    29 
    30     @Override
    31     public void d() {
    32 
    33     }
    34 }

    可见,根据接口隔离的原则设计的接口不管是在B还是在D类中都没有用不到的方法,之前的A接口被拆分成了A和C接口。这样的设计原则就是接口隔离原则

  • 相关阅读:
    面向对象设计原则
    简单工厂模式和策略模式结合使用php
    lua string
    js.ajax优缺点,工作流程
    深入理解JavaScript是如何实现继承的
    js中哈希表的几种用法总结
    js,indexOf()、lastIndexOf()
    js获取字符串字节数方法小结
    JS(JavaScript)插入节点的方法appendChild与insertBefore
    js中的this关键字详解
  • 原文地址:https://www.cnblogs.com/zyzblogs/p/11274107.html
Copyright © 2011-2022 走看看