Sto leggendo il libro Principi, pratiche e schemi dell'iniezione di dipendenza e ho letto il concetto di astrazione che perde, che è ben descritto nel libro. In questi giorni sto refactoring di una base di codice C # usando l'iniezione di dipendenza in modo che vengano utilizzate chiamate asincrone invece …
Ho un corso con alcune funzionalità predefinite / condivise. Io lo uso abstract classper questo: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } …
Le interfacce vuote sono generalmente considerate cattive pratiche, per quanto ne so, specialmente dove cose come gli attributi sono supportate dal linguaggio. Tuttavia, un'interfaccia è considerata "vuota" se eredita da altre interfacce? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, I2 …
Guardando nel Java Collections Framework, ho notato che alcune interfacce hanno il commento (optional operation). Questi metodi consentono di implementare le classi attraverso un UnsupportedOperationExceptionse non vogliono implementare quel metodo. Un esempio di questo è il addAllmetodo in Set Interface. Ora, come indicato in questa serie di domande, le interfacce …
Per esempio: Dire che ho classi A, B, C. Ho due interfacce, chiamiamole IAnimale IDog. IDogeredita da IAnimal. Ae Bsono IDogs, mentre Cnon lo è, ma è un IAnimal. La parte importante è che IDognon fornisce funzionalità aggiuntive. Viene utilizzato solo per consentire Ae B, ma non C, essere passato …
Diciamo che stiamo facendo un parser. Un'implementazione potrebbe essere: public sealed class Parser1 { public string Parse(string text) { ... } } Oppure potremmo invece passare il testo al costruttore: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } …
Questo vale sia per Java SE che per Android, poiché i contratti sono identici. Documentazione CharSequence per Java SE Documentazione CharSequence per Android CharSequencenon definisce un contains(CharSequence)metodo. Non riesco a trovare un motivo per cui, e includerlo sarebbe abbastanza utile, evitando la necessità di chiamare CharSequence#toString()per verificare la presenza di …
Ho lavorato sul refactoring del codice e penso di aver fatto il primo passo nella tana del coniglio. Sto scrivendo l'esempio in Java, ma suppongo che potrebbe essere agnostico. Ho un'interfaccia Foodefinita come public interface Foo { int getX(); int getY(); int getZ(); } E un'implementazione come public final class …
Ho due oggetti che rappresentano un "Bar / Club" (un posto dove bevi / socializzi). In uno scenario ho bisogno del nome della barra, dell'indirizzo, della distanza, dello slogan In un altro scenario ho bisogno del nome della barra, dell'indirizzo, dell'URL del sito web, del logo Quindi ho due oggetti …
Java fa una chiara distinzione tra classe interface. (Credo che anche C # lo faccia, ma non ne ho esperienza). Quando si scrive C ++, tuttavia, non esiste alcuna distinzione imposta dal linguaggio tra classe e interfaccia. Di conseguenza, ho sempre visto l'interfaccia come una soluzione alternativa per la mancanza …
Dato il tipo esistenziale T = ∃X.{op₁:X, op₂:X→boolean} e questa interfaccia Java generica: interface T<X> { X op₁(); boolean op₂(X something); } Quali sono le differenze fondamentali tra il tipo esistenziale e l'interfaccia Java? Ovviamente ci sono differenze sintattiche e l'orientamento agli oggetti di Java (che include anche dettagli come …
Da tempo gioco con C # per Windows e ASP.net per lo sviluppo MVC. Ma non sono ancora chiaro in alcune aree. Sto cercando di comprendere la differenza di base tra e problemi di prestazioni con l'utilizzo e lo scambio di tipi simili di interfacce di raccolta generiche . Qual …
Ho iniziato a esaminare i modelli di design di recente e una cosa che sto codificando si adatterebbe perfettamente al modello di strategia, fatta eccezione per una piccola differenza. In sostanza, alcuni (ma non tutti) dei miei algoritmi, hanno bisogno di un parametro aggiuntivo o due passati a loro. Quindi …
Durante uno dei miei studi sulle complessità di C #, mi sono imbattuto in un passaggio interessante riguardante l'implementazione esplicita dell'interfaccia. While this syntax is quite helpful when you need to resolve name clashes, you can use explicit interface implementation simply to hide more "advanced" members from the object level. …
Sto scrivendo un gioco in Typescript, e ho deciso di provare ad aderire all'idea di " programmazione basata su interfaccia ", in cui si scrive codice basato su un'interfaccia, anziché sull'implementazione, di un oggetto. Ho scritto un buon numero di interfacce e classi che le implementano, poi ho fatto un …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.