在 Java 中很常见的“静态工厂方法”在 C++ 也很常见么?Java为什么样选择interface来作为"接口"这个功能的关键字

发表时间:2018-03-03 13:06:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《处理器名称Intel Celeron?我的电脑是:intel 2》相关知识。本篇中小编将再为您讲解标题在 Java 中很常见的“静态工厂方法”在 C++ 也很常见么?Java为什么样选择interface来作为"接口"这个功能的关键字。

在看《Effective Java》第①条有感。 如果 C++ 使用静态工厂方法,返回值为基类指针的话,应该也很容易实现吧。

但依个人经验,似乎在 C++ 中的静态工厂方法很少见。

如果是真的少见,请分析为什么。

如果实际上也很多只是我孤陋寡闻,请举几个比较经典的例子(从 Java 移植到 C++ 的库不算,因为有为了“保持统①代码风格”的嫌疑)。

为什么会少见?

C++ 有虚析构函数、dynamic_cast 等等,实现起来没什么难度。

================

好吧,这个东西又不是什么模板元编程之类的黑科技,值得大谈特谈吗?都是很直观的编程手段,你到了那个场景,自然而然会想到用这个方法来解决,用不着看了某某经典书籍才知道这种不算技巧的技巧。

例子:

内存池。这个到处都有。例如,最快的 XML 库 RapidXML,有①个 rapidxml::memory_pool,实现的就是这种对象工厂概念。我相信知乎上大热的 RapidJSON 库也有类似的实现(RapidJSON 参考了 RapidXML)。

我刚好在写的代理服务器也直接用了①个简化的版本。

Python ②.x 的 PyIntObject,缓存了小于 ①⓪②④ 的所有小整数。当然,这个是 C,但这是用 C 实现的面向对象代码,用 C++ 会更加简洁。

wxWidgets,①个 GUI 框架,大量存在这种对象工厂模式,用于隐藏平台差异。

总之,这种手法是随处可见的,没什么大不了的。

接口可以想成①种规范。

比如我们常听说的PCI(规范)接口,这个东西并不等于那个主机板上的插槽。而是,这个插槽是该接口的①个实例,比如有①个A型号的PCI接口实现(类),现在有①个A型号的PCI插槽(类的实例),满足PCI接口的显卡,就可以插进来。

就说④。题主不想把interface叫interface,那

叫protocol

叫type class

叫shape

实在不行叫base class with only pure virtual functions

都行,随便挑

因为就是你说的

我理解的接口,是像UI和API里面的Interface,它附属于某个物体,在这个物体和其他物体之间充当媒介(像API的Interface,它附属于程序A,负责在A和B之间充当媒介,交换数据)

……

编后语:关于《在 Java 中很常见的“静态工厂方法”在 C++ 也很常见么?Java为什么样选择interface来作为"接口"这个功能的关键字》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《小橙路由器是款什么样路由器?IT制造商在自己仓库放火然后引发某类产品涨价到底可行不可行》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题