ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于接口、组件和SOA的架构设计与实现

2021-10-22 23:34:29  阅读:166  来源: 互联网

标签:SOA 架构设计 draw 函数 接口 Shape 派生类 组件 抽象类


 

一、接口的概念

  1.接口:是专门用来被继承的,一个接口,可以包含一个类属性的变量、常量等内容。但是,接口中的方法不能有具体的代码。接口中的方法类似虚函数,接口也就类似于抽象类。这就意味着,接口不能被实例化,不能把程序入口放到接口中。这样设计的目的是为了实现多重继承,所以接口就出现了。

  2.抽象类:只要有一个抽象方法,或者说包含虚函数的类,此类就被标记为抽象类。作为抽象类,用户不能创建此类的实例,只能创建继承它的类的实例。抽象类通常是作为基类,让派生类去实现纯虚函数。派生类必须实现纯虚函数才能被实例化,所谓实现,就是去定义虚函数的函数体。

  3.虚函数:虚函数的定义如下,虚函数没有函数体,只有声明,后加 =0 表示此为纯虚函数。

virtual 返回值类型 函数名 (函数参数) = 0;

 

举例:

class Shape {
    public:
        virtual void draw() const = 0; //虚函数1,画出一个对象
        virtual void error(const string &msg); //虚函数2,报告错误
        int objectID() const;   //返回当前对象的整型标识符
};

class Rect: public Shape { //派生类矩形
};
class Elli: public Shape { //派生类椭圆形
};

 

说明:

  上述定义了一个抽象类Shape,draw()函数,并且由“=0”可知它是一个纯虚函数,是没有定义具体实现成员的函数,实际上,他是一个接口。error()函数,如果需要报告错误,就可以调用它。抽象类中定义的虚函数draw()告诉了其派生类要画一个对象,就只是告诉你要“画”这个动作,你咋画就管不着了,不管你是画三角形还是矩形还是五角形我都不管。而派生类Rect就是去实现draw()这个函数,它告诉我要画,然后我就去画矩形,Elli类去画椭圆形。

总结:

  从说明中可以看出,draw() 虚函数就相当于一个“通用的动作”,派生类Rect和Elli只有去实现了这个“通用的动作”才知道要去画,这样我们就叫虚函数draw()为接口,而基类Shape的派生类Rect、Elli是去实现接口,上述特性实际上是面向对象的抽象类或者说虚函数的作用,这个作业其实就是,把虚函数当成接口。

标签:SOA,架构设计,draw,函数,接口,Shape,派生类,组件,抽象类
来源: https://www.cnblogs.com/lxpblogs/p/15440775.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有