您好,登录后才能下订单哦!
C++中怎么实现一个接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
定理1:C++接口是依赖的终点。接口不需要依赖任何东西。
推论1:依赖C++接口是安全的。不会带来更多的依赖关系。
推论2:当我们需要依赖时,我们必须尽量做到:我们依赖的是接口。而不是实际的东西。
前面的WNS的例子中,是函数指针接口的应用。下面举出一个纯虚类的例子。
假设我们制作了一个对话框(MyDlg)。我在对话框上添加了一个控件(MyCtrl)。MyCtrl派生于一个基类MyCtrlBase,该Base类有一个虚函数:
virtual void OnClick() = 0;
该控件被点击的时候,则OnClick会被调用。现在的意图是,该控件被点击的时候,我的对话框发生某种变化,比如说,MyDlg::OnMyCtrlClick()被调用。这如何实现呢? 最常见的但是也是错误的方法如下首先是MyDlg:
class MyDlg : public MyDlgBase { public virtual void OnMyCtrlClick() { … } private: MyCtrl * m_myCtrl; class MyCtrl : public MyCtrlBase { public: virtual void OnClick(); private: MyDlgCtrl *m_parentDlg; };
我确实实现了。但是这个实现方法真的很愚蠢。因为MyCtrl和MyDlg完全依赖了对方。任何一个都不能脱离对方而被重用。MyDlg依赖MyCtrl尚可以理解。因为这个对话框中含有这个控件。但是MyCtrl为何要依赖MyDlg呢?这是完全没有必要的。我自己是一个控件,没有理由理会我在哪个窗口里。
无论在哪个窗口里,都是一样的作用。 当对话框上有多个不同控件时,情况会更加复杂。最终的结果,导致全部的组件之间都互相依赖,没有任何一个部分是可以重用的。 正确的方法是抽象出一个接口。这个C++接口叫做“点击接收者”。
下面再举我们在Capsuit的开发中,碰到的一个问题。情况是这样的:我们的软件,要对计算机进行全面的检查。包括检查硬件,检查操作系统信息,检查注册表,检查进程,以及运行的服务等等,来判断当前计算机是否正常。
本人负责开发检查部分。这个部分的任务是,根据外部输入的需求,来调用相应的实际进行检查的函数。这些函数则由各个不同部门的同仁实现好。本人只要调用他们就可以了。
struct condition { string check_type; // 告诉我检查的类型, string param1; // 检查的参数,比如说是哪个注册表项要检查,等等 string param2; // 同上,都是取决于不同类型的检查而不同的参数 };
关于C++中怎么实现一个接口问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。