从职位的角度来理解软件接口

从职位的角度来理解软件接口

 

黄国强 2009-2-20


      在C++中,并不存在特别的接口关键词。同类一样,都用class这个关键词。所以很多人把接口和基类混为一谈,显然这是错误的。下面将从职位的角度来试图回答“接口是什么”“怎样理解接口”这两个问题。先看一段代码。

// 负责表示秘书职位接口,受雇为上级处理通讯及日常事务和杂务
class ISecretary
{
public:
    // 为上级处理日常事务和杂务
    virtual void TransactionProcessing(void) = 0;
};

// 负责表示秘书
class CSecretary : public ISecretary
{
    virtual void TransactionProcessing(void)
    {
        ...    // 这里写函数的具体实现代码
    }
};

// 负责表示上级
class CLeader
{
    // 上级工作
    void Work(Secretary * p)
    {
        ...
        p->TransactionProcessing();
        ...
    }
};

      上面这段代码,定义了一个秘书职位的接口类ISecretary和秘书CSecretary。CSecretary从ISecretary继承。有的人会认为,定义一个什么都不干的接口有什么意义?我要说这个意义很大。理由如下。
      我们设象一下,如果没有定义一个秘书职位。那么CLeader必然直接面对CSecretary这个对象。从公司管理角度打个比方,这属于人治,是一种不 太好的管理方法。如果加上了秘书职位后,上级CLeader面对的是秘书这个职位而无需知道具体的秘书。我们还是从公司管理角度打个比方,这种管理就变成 了岗位管理和制度管理。显然这种管理方法是我们很多企业所追求的。在公司管理中,将职位明确的提出带来的好处很多,列举如下:
    * 职责清楚,避免扯皮;
    * 因为知道自己的职责,所以目标明确,工作效率很高;
    * 不断提高自己的职位技能;...
    同样,一个软件系统内部也需要定义很多接口,带来好处也是非常多的。列举如下:
    * 模块职责清楚;
    * 模块之间都通过接口调用,查找问题很容易;
    * 如果一个模块的实现写的不好,可以重写或者干脆换掉,也不会影响别的模块;...
   
    我对软件架构设计有一个观点就是“架构即接口的集合”。可见,接口在软件设计中的重要性。总结一下。
    * 接口是系统中的元素对其他元素提供服务的描述;
    * 接口的职责是从使用者角度来定义的;
    * 接口一定要放在一个领域中讨论才有意义;
    * 接口体现了依赖倒置这个原则(DIP);

相关讨论可以看我的另一篇blog:架构体验系列:架构的起点 http://acloudblog.blog.sohu.com/22198526.html

附网上看来的,有人将中美对职位的不同要求做了个对比,发现挺有趣的,故列在下面。
http://shehui.daqi.com/bbs/00/2468016.html

A:秘书(总裁助理)  美国                                             中国 
       
             1)中英文流利,能够为总裁做即时翻译              1)年龄28岁以下; 身高1.62以上,五官端正,气质好

             2)公文写作能力强; 熟悉各类办公办公软件,      2)本科及以上

              具有良好的电脑操作水平

             3)擅长沟通,应对公众媒体;具有团队合作精神    3) 英文六级以上,语言表达能力强,擅长沟通等

             4)能够经常出差(一年1/5的时间)

             5)具有高中以上学历;同等职位工作经验3年以上

B:大学教师--非教授级别: 美国(心理学)                          中国

             1)博士学历(已完成)                                     1) 硕士,年龄28以下,博士可适当放宽条件

             2)具有心理学方面成功的教学经验                   2) 语言表达能力强,英语六级;本科,研究生专业一致

             3)愿致力于本科教学和心理科学的研究             3) 发表论文2篇

             4)请表明你的教学理念,研究兴趣等                  4) 党员优先

C) 银行职员     美国                                         重庆去年一家商业银行的招聘广告

             1)高中毕业;有现金收付经验优先                       1) 本科学历; 英语四级以上,电脑2级以上

             2)性格细心,注意细节; 耐心,友好                       2) 身高1.60 以上,五官端正

             3)能够意识到销售机会,主动向客户介绍银行产品  3) 口头,写作能力良好,长于沟通

             4)能拿动沉重的银行钱箱                                 4) 附5寸的生活照片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值