zoukankan      html  css  js  c++  java
  • 面向接口程序设计思想实践

    文/xuld      

    面向接口设计,基本步骤为:
    1. 使用面向对象的方法,确定要研究的实体对象,以及对象之间的关系。
    2. 根据对象之间的关系,确定对象必需的成员,即接口。
    3. 实现所有接口,在实现接口时所需要的工具函数单独放到一个静态类,而非对象本身。

    举例,现在需要设计一个计算器,它将拥有计算 + - * / 运算符的能力。

    1. 确定要研究的实体对象。

        // 这是对象。
        class Computer {
    
        }

    2. 确定对象必需的成员。

        class Computer {
    
            // 这是接口。
            int compute(int left, char operator, int right) {
    
            }
            
        }
    

    3. 实现方法。

     class Computer {
    
            int compute(int left, Operator operator, int right) {
                // 实现接口时,不会改变原有类的设计,而是单独提取工具类库。
                switch(operator) {
                    case '+':
                        return ComputerHelper.add(left, right);
                    case '-':
                        return ComputerHelper.sub(left, right);
                    case '*':
                        return ComputerHelper.mul(left, right);
                    case '/':
                        return ComputerHelper.div(left, right);
                }
            }
            
        }
    
        static class ComputerHelper {
    
            static int add(int left, int right) { return left + right; }
            static int sub(int left, int right) { return left - right; }
            static int mul(int left, int right) { return left * right; }
            static int div(int left, int right) { return left / right; }
    
        }
    

    和面向对象的区别:

    1.面向对象中,类内部封装大量实现逻辑。面向接口中实体类是不可再拆分的最小逻辑单位,实现逻辑不位于类内部。

    2.面向对象中,类代表一个完整的对象。而面向接口中类代表对象的一个片面。例如人这个对象,在面向接口中,可以分成动物和用户两种实体,它们直接共享一个接口而非对象。

    面向接口的优势

    在面向接口中,对象以及对象的目标是非常明确的,通过对象的关系链可以很清晰地理解整体的构架图,而不会受到各个实现逻辑的干扰。

    同时,部分逻辑的改变不导致整个项目重构。

  • 相关阅读:
    unity3d中获得物体的size
    Quartz中时间表达式的设置-----corn表达式
    .net web 开发平台- 表单设计器 一(web版)
    编写你自己的单点登录(SSO)服务
    2009年末最强梅麻呂3D动画游戏大作 汉化补丁
    程序猿加班到深夜,你经历过没?
    初步理解socket
    几种开源分词工具的比較
    ORM框架
    linux tar.gz zip 解压缩 压缩命令
  • 原文地址:https://www.cnblogs.com/xuld/p/3803834.html
Copyright © 2011-2022 走看看