U .NETu klasa je implicitni interface i polimorfni subclassing je ekvivalentan ispunjavanju base contracta nasledjene klase. Sto u prevodu Petre znaci da si ti taj Factory+Bridge pattern komotno mogao da implementiras kroz subclassing, primer sam po sebi ne opravdava interfejse jer nema decoupling-a. Tako npr radi .NET za data klase (SqlCommand, OleDbCommand, OdbcCommand, MySQLCommand, itd svi nasledjuju od DBCommand base klase i abstrakcija se radi kroz base klasu umesto kroz interface). Pride mozes da ustedis na kodiranju za one aspekte implementacija koje su svima zajednicke (a koje pri koriscenju interfejsa moras da ubacis u svaku implementaciju pojedinacno).
Posto je klasa implicitni interface veoma je lako u slucaju preke potrebe izvuci punokrvni interface contract iz iste koriscenjem bilo kog od refactoring alata ukljucujuci i VS Team System, tako da ni pitanje ko ce sta kad i kako da menja u projektu takodje nema veze sa interfejsima niti preventivno implementiranje istih doprinosi brzim i boljim promenama.
U .NET-u Interfejsi ti trebaju za:
- decoupling klase i njenog implicitnog interfejsa posto su oni po defaultu nerazdvojivi (gde ide definicija klase ide i njen kod). Npr kad u remotingu hoces da klijent nema implementacione detalje serverskog koda, onda se remoting radi preko interfejsa i klijent zna samo interfejs a server ima njegovu implementaciju
- kad jedna klasa treba da ispuni dva ili vise contract-a (npr List<T> implementira IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable) jer subclassing alternativa ne postoji (nema multiple inheritance)
- kad jedan contract treba da bude implementiran u vise klasa a subclassing nije podoban (npr ICloneable i IDisposable)
Ova lista je u principu drugacije srocena lista sa onog MSDN linka koji je negyxo okacio. Za sve ostalo postoji bolje resenje od primene interfejsa, ako neko misli da gresim nek da primer.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić