Perché l'accesso del modificatore per le proprietà deve essere pubblico con Unity?

0

Perché l'accesso del modificatore per le proprietà deve essere pubblico con Unity?

Sono molto interessato a una spiegazione dettagliata della mia domanda. Ho letto dei suggerimenti per farlo in altri modi, ma non una spiegazione dettagliata del perché questo non può essere dichiarato esplicitamente nel mio codice.

    
posta Victor Sigler 15.11.2013 - 17:42
fonte

1 risposta

5

Perché dovresti iniettare proprietà private? Questo non è ciò che DE è per. L'inserimento di proprietà private viola l'incapsulamento.

Uno degli overload di costruttore sulla tua classe dovrebbe specificare tutto ciò che la classe ha bisogno di istanziare. Se la classe non può specificare ciò di cui ha bisogno nella sua API pubblica, non ne ha bisogno.

Da link (enfasi mia):

There are two aspects to Dependency Injection. Firstly, an object's interface should define the services that the object requires as well as those it provides. Secondly, the code that satisfies the requirements of an object by giving it a reference to the services of is collaborators is external to both the object and its collaborators. For this reason, the pattern also used to be called "third-party binding" or "third-party connect": some third party is responsible for connecting and satisfying the service requirements of a component (the party of the first part) with those provided by another component (the party of the second part).

The name "Dependency Injection" only relates to the second aspect. And worse, makes it sound like dependencies are "injected" through the object's encapsulation boundary rather than explicitly defined as part of the object's API. And so we get "dependency injection" APIs, like that in JavaEE 5, which use reflection to poke dependencies into an object's private fields, bypassing the constructor, adding a great deal of complexity to client & test code while not providing the benefits that the Dependency Injection pattern should deliver.

    
risposta data 15.11.2013 - 17:52
fonte

Leggi altre domande sui tag