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

2021/10/22 23:40:02

本文主要是介绍基于接口、组件和SOA的架构设计与实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

一、接口的概念

  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的架构设计与实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程