zoukankan      html  css  js  c++  java
  • 设计模式课程 设计模式精讲 3-7 接口隔离原则讲解及Coding

    1    主讲内容

    1.1  核心内容

    1.2  优点

    1.3  课程记录

    2    代码演练

    2.1  接口隔离原则反比

    2.2  接口隔离原则正比

    1    主讲内容

    1.1  核心内容

    总结:细粒度可以进行再组装,粗粒度不可再拆分,所以接口设计的时候尽可能适度的拆分

    1.2  优点

    ◆优点:符合我们常说的高内聚低耦合的设计思想从而使得类具有很好的可读性、可扩展性和可维护性

    1.3  课程记录

    ◆定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
    ◆一个类对一个类的依赖应该建立在最小的接口上建立单一接口,不要建立庞大臃肿的接口
    ◆尽量细化接口,接口中的方法尽量少

    2    代码演练

    2.1  接口隔离原则反比

    接口:

    package com.geely.design.principle.interfacesegration; 
    public interface IAnimalAction { void eat(); void fly(); void swim(); }

    狗类:

    package com.geely.design.principle.interfacesegration;
    
    public class DogCaseOne implements IAnimalAction{
    
        @Override
        public void eat() {
    
        }
    
        /**
         * 注:这里是空方法,狗不会飞,所以明显设计的不合理,最好不要有太多的空方法
         */
        @Override
        public void fly() {
    
        }
    
        @Override
        public void swim() {
    
        }
    }

    百灵鸟类:

    package com.geely.design.principle.interfacesegration;
    
    /**
     * 百灵鸟
     */
    public class LarkCaseOne implements IAnimalAction{
        @Override
        public void eat() {
    
        }
    
        @Override
        public void fly() {
    
        }
    
        /**
         * 很明显,百灵鸟不会游泳,此处为空方法,设计不合理
         */
        @Override
        public void swim() {
    
        }
    }

    2.2  接口隔离原则正比

    接口1:

    package com.geely.design.principle.interfacesegration;
    
    public interface IEat {
        void eat();
    }

    接口2:

    package com.geely.design.principle.interfacesegration;
    
    public interface IFly {
        void fly();
    }

    接口3:

    package com.geely.design.principle.interfacesegration;
    
    public interface ISwim {
        void swim();
    }

    狗类:

    package com.geely.design.principle.interfacesegration;
    
    /**
     * 狗只用实现 吃和游泳方法即可
     */
    public class DogCaseTwo implements IEat,ISwim{
        @Override
        public void eat() {
    
        }
    
        @Override
        public void swim() {
    
        }
    }

    百灵鸟类:

    package com.geely.design.principle.interfacesegration;
    
    /**
     * 百灵鸟实现 吃和飞方法即可
     */
    public class LarkCaseTwo implements IEat,IFly{
        @Override
        public void eat() {
    
        }
    
        @Override
        public void fly() {
    
        }
    }
  • 相关阅读:
    2.创建第一个启用了服务和数据驱动的silverlight5应用程序
    1.搭建siverlight 5开发环境
    读《C程序设计语言》笔记1
    读《C程序设计语言》笔记2
    郑州轻工业大学OJ 2834.小凯的书架 题解 线段树二分
    洛谷P3834 【模板】可持久化线段树 2/POJ2104 Kth Number 题解 主席树
    洛谷P6883 [COCI20162017#3] Kroničan 题解 状压DP入门题
    CF1586D. Omkar and the Meaning of Life 题解 纪念一下第一道AC的交互题
    冒泡事件
    JavaScript 对象是词典
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/11202854.html
Copyright © 2011-2022 走看看