Principio di progettazione dell'oggetto che descrive la simmetria dell'interfaccia

4

Qualcuno ha fatto un commento su parte del mio codice che ritenevo fosse prezioso, e volevo cercare il modello di progettazione per saperne di più, ma ho difficoltà a identificare il principio di progettazione a cui si riferisce.

Essenzialmente avevo un oggetto Encoder / Decoder. In una direzione prenderebbe una stringa e restituirebbe un oggetto con informazioni sulla stringa (diciamo un oggetto con un singolo intero). La direzione inversa prenderà quel numero intero e restituirà una stringa.

La raccomandazione che mi è stata data è che se una direzione prende una stringa e restituisce un oggetto, il contrario dovrebbe prendere lo stesso oggetto e restituire una stringa.

Quale (se esiste) principio di progettazione dovrebbe riguardare questa simmetria di interfaccia?

    
posta nanotek 05.12.2017 - 18:10
fonte

1 risposta

6

Questo design corrisponde al concetto matematico della funzione inversa :

Se due funzioni f e g sono come:

    f: S -> D  (f takes elements in set S and maps them to elements in set D) 

    g: D -> S  (g takes elements in set D and maps them to elements in set S) 

    and for any x in S,  g(f(x)) = x

allora g si dice che sia la funzione inversa di f.

Se lo trasponi al tuo problema:

   encode:   object -> string 
   decode: string -> object
   decode(encode(text)) = text

e nessuno sfiderà che decode() è l'inverso di encode()

    
risposta data 05.12.2017 - 21:35
fonte