Как назвать этот ориентированный на ключ шаблон защиты доступа?

По-видимому, этот ориентированный на ключ шаблон защиты доступа:

class SomeKey { 
    friend class Foo;
    SomeKey() {} 
    // possibly non-copyable too
};

class Bar {
public:
    void protectedMethod(SomeKey); // only friends of SomeKey have access
};

... еще не имеет известного имени, таким образом я хотел бы найти хороший для него так, мы можем обратиться к нему, не повреждая наши языки. Предложения?

Это должно быть:

  • сжатый
  • передайте намерение защиты доступа
  • идеально подразумевайте, что никакое проксирование не требуется (?)

18
задан Community 23 May 2017 в 11:46
поделиться

4 ответа

Мне нравятся, по убыванию предпочтений:

  • идиома "пасс-ключ-друг"
  • идиома "пасс-дверь-друг"
  • идиома "пасс-дверь-друг"
  • идиома "ключ-дверь-друг"
  • идиома "частичный друг"
  • идиома "ограниченный друг"

Я перешел от схемы именования "ключ-замок/ключ-ключ" к схеме именования "пасс", которая мне понравилась.

4
ответ дан 30 November 2019 в 09:21
поделиться

SomeKey немного похож на проход Backstage для доступа к Bar :: protectedMethod. Так что все в этой области должно быть хорошим: идиома паспорта, идиома лозунга, идиома ключа доступа, идиома VIP ... ошибочный доступ?

4
ответ дан 30 November 2019 в 09:21
поделиться

Есть и другие способы сделать это в более общем виде, используя наследование. Здесь классный торт действует как замочная скважина и как ключ. Здесь любой класс, который наследует (также может быть статическим наследованием) от cake, может получить доступ к подмножеству SomeClass, определенному как доступный в cake, и, конечно же, у вас может быть несколько разных подмножеств в нескольких разных классах.

class cake;
class SomeClass {
    friend class cake;
    void foo();
};
class cake {
    void DoFoo(SomeClass& class) { class.foo(); }
};
class lols : cake {
    // Now we can DoFoo().
};

Я бы назвал это замком и ключом.

2
ответ дан 30 November 2019 в 09:21
поделиться

Я предлагаю назвать это Badge Idiom, обозначающей жетон, вручаемый по требованию и доказывающий обладание властью. Я считаю, что это лучшая метафора, чем те, что вращаются вокруг термина Ключ во многих других ответах здесь.

"Ключ" уже довольно перегружен в терминологии программирования, смешивая, по крайней мере, понятия поиска и ограниченного доступа. Кроме того, реальные ключи обычно управляют отдельными замками, а не набором всех замков одного производителя, и принимающий класс в этом шаблоне - это набор не замков, а самозащищающихся сущностей, которых просят выполнить действия.

"Значок" передает принцип, что токен дает полномочия целому классу других сущностей, а не только одному объекту. Этот термин может слишком полагаться на (ориентированные на США?) образы полиции или службы безопасности, и я рассматривал такие термины, как Subpoena или Warrant, но они показались мне слишком ориентированными на предоставление доступа третьей стороне. В любом случае, люди с определенным типом значка могут принуждать к кодифицированному поведению классы людей, уважающих эти значки. Я вижу общее взаимодействие примерно так:

  • А: Эта вечеринка слишком громкая. Сделай потише свою стереосистему. (показывает значок)
  • Б: О, хорошо, офицер. (groan)
4
ответ дан 30 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: