gpt4 book ai didi

c++ - 控制反转的利弊

转载 作者:IT老高 更新时间:2023-10-28 21:41:31 30 4
gpt4 key购买 nike

假设我有一个想要通过 API 公开的 [acme] 对象流。我有两个选择,回调和迭代器。

API #1:回调

// API #1
// This function takes a user-defined callback
// and invokes it for each object in the stream.
template<typename CallbackFunctor>
void ProcessAcmeStream(CallbackFunctor &callback);

API #2:迭代器

// API #2
// Provides the iterator class AcmeStreamIterator.
AcmeStreamIterator my_stream_begin = AcmeStreamIterator::begin();
AcmeStreamIterator my_stream_end = AcmeStreamIterator::end();

API #1 从用户手中获取程序的控制流,并且在整个流被消耗之前不会返回(暂时忘记异常)。

API #2 将控制流保留在用户手中,允许用户自行向前移动流。

API #1 感觉更更高层次,允许用户立即跳转到业务逻辑(回调仿函数)。另一方面,API #2 感觉更灵活,允许用户进行较低级别的控制。

从设计的角度来看,我应该选择哪一个?还有更多我还没有看到的优点和缺点吗? future 有哪些支持/维护问题?

最佳答案

迭代器方法更灵活,回调版本可以通过现有算法轻松实现第一个:

std::for_each( MyStream::begin(), MyStream::end(), callback );

关于c++ - 控制反转的利弊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156797/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com