Geo*_*che 18 c++ design-patterns idioms friend access-protection
显然,这种面向密钥的访问保护模式:
class SomeKey {
friend class Foo;
SomeKey() {}
// possibly non-copyable too
};
class Bar {
public:
void protectedMethod(SomeKey); // only friends of SomeKey have access
};
Run Code Online (Sandbox Code Playgroud)
......还没有一个已知的名字,因此我想找到一个好的名字,所以我们可以在不断言的情况下参考它.建议?
它应该是:
我建议将其命名为Badge Idiom,表示根据请求提供的令牌,证明拥有权威。我相信,与这里许多其他答案中围绕术语“ Key”的比喻相比,这是一个更好的比喻。
“密钥”在编程术语中已经相当多,至少混淆了查找和限制访问的概念。此外,真正的钥匙通常操作单个锁,而不是制造商提供的所有锁的集合,并且此模式中的接受类不是一组锁,而是一组被要求执行操作的自我保护实体。
“徽章”传达了这样的原则:令牌向整个其他实体类授予权限,而不仅仅是单个对象。该术语可能过于依赖(以美国为中心?)警察或安全图像,我确实考虑过诸如传票或搜查令之类的术语,但它们似乎过于关注第三方授予访问权限。无论如何,具有给定徽章类型的个人可以强制尊重这些徽章的个人类别的行为规范化。我看到整体交互是这样的: