posts - 46, comments - 92, trackbacks - 0, articles - 2
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

面向接口程序设计思想实践

Posted on 2014-06-23 13:21 xuld 阅读(...) 评论(...) 编辑 收藏

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

面向接口的优势

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

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