non-virtual-interface相关内容

如何使用 C++ 中的非虚拟接口习语来实现接口类?

在 C++ 中,接口可以由其方法是纯虚拟的类来实现. 这样的类可以是库的一部分,用于描述对象应该实现哪些方法才能与库中的其他类一起工作: class Lib::IFoo{上市:虚空方法()= 0;}; : class Lib::Bar{上市:无效的东西(Lib::IFoo &);}; 现在我想使用类Lib::Bar,所以我必须实现IFoo接口. 出于我的目的,我需要一整套相关的 ..
发布时间:2021-12-31 14:55:30 C/C++开发

C#/C++ 中的非虚拟界面设计模式

在设计界面时,有人推荐使用非虚拟界面模式.有人可以简要概述一下这种模式的好处是什么吗? 解决方案 非虚拟接口模式的本质是你拥有私有虚拟函数,这些函数被公共非-virtual 函数(非虚拟接口). 这样做的好处是,与派生类能够覆盖其接口的任何部分相比,基类对其行为有更多的控制.换句话说,基类(接口)可以为其提供的功能提供更多保证. 作为一个简单的例子,考虑带有几个典型派生类的古老 ..
发布时间:2021-12-22 08:54:37 C#/.NET

非虚拟接口(NVI)成语在C#中与C ++中有用吗?

在C ++中,我经常需要 NVI 获取我的API的一致性不过C#中我并没有看到它使用的很多。我想知道是不是因为C#,作为一种语言,提供使NVI不必要的功能? (我仍然在C#中使用NVI,虽然在需要的地方)。 解决方案 我认为解释只是在C#传统的“Java风格的OOP更根深蒂固,NVI与此相反。 C#有一个真正的接口类型,而NVI依赖于“接口”实际上是一个基类。这是C ++的完成,所以它自然 ..
发布时间:2017-05-16 18:09:25 C#/.NET

C#/ C ++中的非虚拟接口设计模式

设计界面时,有人建议使用非虚拟界面模式。有人可以简要概述这种模式的好处吗? 解决方案 非虚拟界面模式的本质就在于私人虚拟功能,由公共非虚拟功能(非虚拟界面)调用。 这样做的优点是,如果派生类能够覆盖其接口的任何部分,那么基类对其行为的控制就会更大。换句话说,基类(接口)可以提供有关其提供的功能的更多保证。 作为一个简单的例子,考虑一对好的老动物类典型派生类: class ..
发布时间:2017-05-14 10:40:53 C#/.NET

非虚拟接口(NVI)成语在C#中如C ++一样有用吗?

在C ++中,我通常需要 NVI 来获得我的API的一致性。我不认为它在C#中使用了很多,虽然。我不知道是否是因为C#,作为一种语言,提供的功能,使NVI不必要? (我仍然在C#中使用NVI,虽然,如果需要。) 解决方案 我认为解释只是在C#传统的“Java式OOP更加根深蒂固,而NVI与之相反。 C#有一个真实的接口类型,而NVI依赖于“接口”实际上是一个基类。 在C#中,它仍然可 ..
发布时间:2016-10-24 12:53:03 C#/.NET

在C#/ C非虚拟接口设计模式++

当设计一个界面,有人推荐使用非虚拟接口模式。有人可以简要地说明一下这种模式的好处是? 解决方案 非虚接口模式的本质是,你必须私有虚拟的功能,这是由公开非虚函数(非虚拟接口)调用。 这样做的好处是,该基类有超过它的行为更多的控制会比如果派生类能够覆盖其界面的任何部分。换句话说,基类(接口),可以提供关于它提供的功能更多的保证。 举一个简单的例子,考虑好老的动物类与一对夫妇典型的派 ..
发布时间:2016-09-08 18:58:22 C#/.NET