- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在完成现代 C++ 设计(Alexandrescu,2001 年)的第 1 部分时,我想到了以下想法:策略不只是概念吗?
如果我理解正确的话,概念是对实现该概念的类的接口(interface)的一组要求。
策略也是策略类必须满足的规范。 (虽然一些策略类可以提供丰富的接口(interface),但我不确定这是否会使策略超出概念范围)
最佳答案
您需要考虑概念和政策的目标是什么。
概念在句法和语义上建立了关于类的强大假设。例如,Comparable
暗示存在类型比较运算符以及某些公理成立,即 a == b -> a is equivalent to b
,而不是 operator==
的任何其他实现.强大的假设使代码更具可预测性。
另一方面,策略建立类的实际行为,强调可互换性。政策的每个单独实现都包含一个或多个概念;但是,插入到类中的策略变体仅共享约束。例如(伪代码):
// constraint Lockable -> has Lock() and Unlock() methods
// concept RealLockable -> constrained by Lockable, Lock() blocks other threads
// concept FakeLockable -> constrained by Lockable, Lock() does nothing
class FakeLock; // a policy that embodies the concept FakeLockable
class Lock; // a policy that embodies the concept RealLockable
class RecursiveLock; // a policy that can also embody the concept of RealLockable
template<class T, Lockable Lock> // constrained by Lockable
class Queue;
策略是一种改变目标类行为的实现技术。概念是建立假设的明确工具:
template<Comparable T>
class PriorityQueue;
Comparable T
在我看来,这不是一项政策,因为当您指定 PriorityQueue<int>
时或 PriorityQueue<double>
您的目标不是改变行为:在概念层面上,所有这些队列所做的就是允许您在恒定时间内访问最小或最大元素。但是,使用某些 future 的语法,您可以声明 T
体现数学上正确的语义,即 a < b -> b > a
, 然后 Comparable T
将是一个概念。
最后,无论政策与否,每个类别都代表一两个概念。类隐式引入概念,概念显式记录它们。
关于c++ - 政策是概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903712/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我需要准备一个关于 iOS 移动设备管理的演示文稿。我被要求包括已实现的政策并选择其中一项并详细描述。问题是,我不知道存在哪些不同的政策。请帮帮我。 最佳答案 这里是您需要了解的有关 MDM 和 MD
我正在尝试使用 ThreadPoolExecutor 来安排任务,但在其策略方面遇到了一些问题。这是其声明的行为: 如果运行的线程少于 corePoolSize,执行器总是倾向于添加新线程而不是排队。
这是默认 Adsense 代码的示例, (adsbygoogle = window.adsbygoogle || []).push({}); 缩小后, “双引号”从代码中剥离。 (ad
假设我有一个模型用户,它可以有多个房子。这些房子可以有多个 parking 位,然后可以有多个汽车或自行车 用户 > 房屋 > parking 位 > [汽车、自行车] 如何检查汽车是否与用户相关?
我有一个管理 iOS 设备的 mdm 服务器。我们已经完成了在设备上安装 mdm 配置文件的所有步骤。此外,我们还应用了适用于设备和 Wi-Fi 等配置的所有政策。 问题 1: 当我们发送“allow
请问如何使用 C# 编辑 gpedit.msc 策略? 最佳答案 gpedit.msc 只是注册表设置的一个接口(interface); gpedit 没有 API 或暴露的框架。要像 gpedit
当我尝试运行我的网站时,它显示 500 internal server error : Internal Server Error The server encountered an internal
在 Play 商店中发布新内容时,它会在下面询问 如果您的应用的某些部分因登录凭据、成员(member)资格、位置或其他形式的身份验证而受到限制,请提供详细信息,以便 Google 审核您的应用 -
我在我应用的admin部分中使用pundit进行访问控制。我有一个仪表板 Controller ,如下所示: class Admin::DashboardsController < AdminCont
我写了一个 Chrome 扩展,它使用本地存储。 当我打开 chrome://policy/在浏览器中,我可以根据其 ID 查看我的扩展程序的数据,但是,当我在注册表中手动更改该值时,它不会自动更新。
当在 Cassandra 中使用 token 感知策略作为负载平衡策略时,所有查询都会自动通过正确的节点发送(其中包含副本,例如 select * from Table wherepartionkey
我想在同一事件中同时展示横幅广告和插页式广告。但我不确定这是否会违反 Google admob 政策,因为当显示插页式广告时,它会覆盖横幅广告。 谢谢。 最佳答案 这是允许的。事实上,建议您这样做以增
您好,我想知道是否通过设置 User Interface Style 来强制我的应用程序进入灯光模式至Light在 plist 中可能会导致我的应用程序被拒绝?? 最佳答案 Official Docu
我想在同一事件中同时展示横幅广告和插页式广告。但我不确定这是否会违反 Google admob 政策,因为当显示插页式广告时,它会覆盖横幅广告。 谢谢。 最佳答案 这是允许的。事实上,建议您这样做以增
我在我的应用程序中使用 Navigation-Drawer。所以我用 navigation_drawer 布局创建了单个 Activity 。每当用户从抽屉导航菜单中选择菜单选项时,我都会使用 fra
我在弄清楚 sails 政策时遇到困难,我按照教程进行操作,但仍然无法使其工作。 在我的policies.js 文件中: module.exports.policies = { '*':true,
我开始收到很多类似这样的 sails 政策: ... 'MyController':{ 'some': ['runPassport', 'isLoggedIn', 'ensureTotpOkI
如何在 htmlunit 中指定 cookie 策略以接受所有 cookie? 最佳答案 只需重新创建整个 CookieManager 类:这是类(class)的来源:http://jarvana.c
我是一名优秀的程序员,十分优秀!