2010-07-24 6 views
14

Apparentemente this key-oriented access-protection pattern:Come denominare questo pattern di protezione dell'accesso orientato alle chiavi?

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

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

... non ha un nome conosciuto ancora, quindi mi piacerebbe trovare una buona per esso in modo che possiamo fare riferimento ad esso senza rompere le nostre lingue. Suggerimenti?

Dovrebbe essere:

  • succinta
  • trasmettere l'intento di accesso di protezione
  • idealmente implica che non è necessario alcun proxy
+0

Buona domanda. Mi sento come se potesse essere ri-strutturato un po 'per consentire il massimo riutilizzo. Pensandoci ... – GManNickG

+0

@GMan: Ora sono curioso, non ho potuto vedere come migliorare la riutilizzabilità. –

+0

Uomo, è sulla punta della mia lingua! Blargh. – GManNickG

risposta

4

mi piace, discendente preferenza:

  • amico passkey linguaggio
  • chiave di accesso porte amico linguaggio
  • passaggio porte amico linguaggio
  • chiave porte amico linguaggio
  • parziale amico idioma
  • idioma riservato-amico

Mi sono allontanato dallo schema di denominazione della serratura a chiave/keyhole per lo schema di denominazione dei passaggi, che è cresciuto su di me.

+0

Hm, avevo sperato di avere più voti e di non dover scegliere tra 2 risposte ... ah bene, a quanto pare non importa a molte persone. Vado personalmente con * passkey * ora. –

4

SomeKey sembra un po 'come una (?) Passaggio del backstage per entrare in Bar :: protectedMethod. Quindi qualsiasi cosa in quell'area dovrebbe essere buona: idioma passaporto, idioma di parole chiave, idioma passkey, idioma VIP ... accesso di classe?

+0

Mi piace l'idioma del Backstage Pass – stefaanv

+0

Hai un singolo preferito qui? Mi piace * pass-key * la maggior parte di questi per essere brevi e (almeno per me) descrittivi. –

2

Ci sono altri modi per farlo, in modo più generale, utilizzando l'ereditarietà. Qui, la torta di classe funziona sia come il buco della serratura che come chiave. Qui, qualsiasi classe che eredita (potrebbe anche essere un'eredità statica) dalla torta può accedere al sottogruppo di SomeClass definito per essere accessibile in torta e, naturalmente, è possibile avere più sottoinsiemi in più classi diverse.

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

Lo chiamerei blocco e chiave.

+0

Sebbene GMan abbia aggiunto un'estensione, la domanda riguarda ancora la denominazione dell'approccio generale. –

+0

Aperto [domanda a lato] (http://stackoverflow.com/questions/3324898/can-we-miglioramento-di-usibilità-di-questo-intelligente-accesso-protezione-pattern) in modo che possiamo rendere questo due discussioni separate. –

4

Propongo di nominare questo il Badge Idiom, a significare un token presentato su richiesta comprovante possesso di autorizzazione. Credo che questa sia una metafora migliore di quelle che ruotano attorno al termine Chiave in molte delle altre risposte qui.

"Chiave" è già abbastanza sovraccarico nella terminologia di programmazione, che combina almeno le nozioni di ricerca e di accesso limitato. Inoltre, le chiavi reali di solito gestiscono blocchi individuali, non l'insieme di tutti i blocchi di un produttore, e la classe accettante in questo modello è un insieme non di blocchi ma di entità auto-protette che vengono richieste per eseguire azioni.

"Badge" trasmette il principio che il token concede l'autorizzazione a un'intera classe di altre entità, non solo a un singolo oggetto. Il termine potrebbe essere troppo dipendente dalle immagini di polizia o di sicurezza (USA), e ho preso in considerazione termini come Subpoena o Warrant, ma sembravano troppo concentrati sulla concessione di accesso da parte di terzi.In ogni caso, gli individui con un determinato tipo di badge possono costringere i comportamenti codificati dalle classi di individui che rispettano tali badge. Vedo l'interazione generale come questa:

  • A: di questo partito troppo forte. Abbassa il tuo stereo. (Distintivo Presents)
  • B: Oh, OK, ufficiale. (lamentarsi)
+0

Hm, vedo il tuo punto ma (per me personalmente) l'associazione non salta tanto in faccia come con key/lock et al :) Anche i tasti non funzionano sempre sui singoli lucchetti: la mia chiave per questa casa qui apre il mio appartamento, la porta principale, la porta della cantina, ... –

Problemi correlati