Stessa interfaccia nella classe di costruzione ma riferimento alla classe concreta

-2

durante il mio lavoro il mio collega spinge una classe che ha un costruttore con due parametri della stessa interfaccia ma ha usato il riferimento alla classe concreta.

Volevo un commento su questo scenario

Questo è un odore di cattivo design?

Modifica aggiungi codice di esempio

Interface a {
       Public function foo()
 }

  Class b implements a 
  ....

   Class c implements a 
   .... 

  Class d {
      Public __constructor ( 
            b $b, c $c ) {

         ...
    }

     Public bar() {
         If ($opt===1) return  $b->foo(); 

      Return $c->foo(); 
     }

Quindi lo stesso "loop" è ripetuto per le altre classi relative a be c

    
posta BruceStackOverFlow 24.09.2018 - 19:54
fonte

2 risposte

1

L'esempio è troppo vago.

d specificamente ha bisogno di un b e un c oggetto, oppure d ha semplicemente bisogno di qualsiasi due a oggetti? È perfettamente possibile che d non possa semplicemente utilizzare qualsiasi a oggetto e deve invece richiedere b e c .

La risposta alla mia domanda è anche la risposta alla tua. Nota che questa domanda non è quella che può essere universalmente risolta da un punto di vista teorico. È contestuale al tuo codice. Dipende dai tuoi requisiti e dalla tua logica aziendale.

    
risposta data 25.09.2018 - 08:14
fonte
0

Non c'è nulla da dire che questa non è l'implementazione corretta di d ; tuttavia, in termini di SOLID principi di progettazione, questo sembra andare contro principio di inversione delle dipendenze .

Dato che hai detto che questo codice ti è stato consegnato da un collega, ti suggerirei di chiedere loro se intendevano violare deliberatamente il principio di inversione delle dipendenze per qualsiasi motivo specifico. Potrebbe essere possibile che intendessero infrangere la regola o che semplicemente la ignorassero.

    
risposta data 25.09.2018 - 18:24
fonte

Leggi altre domande sui tag