美文网首页
那些你要知道的设计原则之-接口隔离

那些你要知道的设计原则之-接口隔离

作者: 小巨人Vea | 来源:发表于2018-04-22 12:05 被阅读18次

    1.定义

    1.客户端不应该被迫或强制依赖它不需要的接口
    2.接口不应太臃肿要小

    2.作用

    • 业务逻辑更清晰
    • 系统更灵活

    3.案例

    以唱歌为例子,下面是歌曲接口,提供英文歌和中文歌两个方法

    //歌曲
    public interface ISong {
    
       //英文歌
       void foreignMusic();
    
       //中文歌
       void chineseMusic();
    }
    

    人实现ISong接口唱歌

    /**
     * 人
     */
    public class Person implements ISong {
    
        @Override
        public void foreignMusic() {
            System.out.print("英文歌");
        }
    
        @Override
        public void chineseMusic() {
            System.out.print("中文歌");
        }
    }
    
    

    唱歌例子实现完毕!没有问题。
    但是如果这个时候出现一个外国人他同样要唱歌,但是他又不需要唱中文歌,如果保持现在的设计,实现ISong接口,这将被迫依赖他他不需要的接口,说明ISong接口的设计是有缺陷的。我们可以重新将ISong接口分为两个一个提供中文歌,一个提供外国歌,修改如下

    /**
     * 中文歌曲
     */
    public interface IChineseSong {
    
        //中文歌
        void chineseMusic();
    }
    
    /**
     * 外国歌曲
     */
    public interface IForeignSong {
    
        //外国歌
        void foreignMusic();
    }
    

    外国人要唱歌只需要实现IForeignSong这一个接口,Person改为实现两个接口,成功解决了外国人不需要唱中文歌的问题,即使之后有新的歌加入也不怕

    /**
     * 外国人
     */
    
    public class Foreigner implements IForeignSong {
    
        @Override
        public void foreignMusic() {
            System.out.print("英文歌");
        }
    }
    
    
    /**
     * 人
     */
    public class Person implements IChineseSong, IForeignSong {
    
        @Override
        public void foreignMusic() {
            System.out.print("英文歌");
        }
    
        @Override
        public void chineseMusic() {
            System.out.print("中文歌");
        }
    }
    

    再说一下单一职责和接口隔离的区别, 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离单一职责原则,它针对的是程序中的实现和细节,而接口隔离原则主要约束的是接口,主要针对的是抽象,对程序整体框架的构建。

    4.总结

    接口的设计粒度应该尽量小,但是也要适度,根据实际情况划分接口粒度。使各个模块独立存在,模块与模块之间的接口应少而简单。

    相关文章

      网友评论

          本文标题:那些你要知道的设计原则之-接口隔离

          本文链接:https://www.haomeiwen.com/subject/kzzrqftx.html