Her er et eksempel på hvor simpelt det er at anvende den. Jeg har lavet et konsolprojekt og har kopieret TinyIoC.cs ind i projektet.
Jeg har herefter lavet et par interfaces og klasser, som jeg vil benytte TinyIoC til at oprette instanser af. Selvom det er nogle små klasser og et lidt specialt mønster, håber jeg at man kan umiddelbart kan gennemskue dette - her er et klassediagram over disse klasser:
For at initalisere en instans af Cat på traditionel vis (Poor man's DI) skal jeg skrive følgende:
Farmer farmer = new Farmer(); Milk milk = new Milk(farmer); IFood food = new Food(); ICat cat = new Cat(food,milk);
Hvis jeg istedet anvender TinyIoC containeren til at initialisere en Cat kan jeg nøjes med at skrive følgende:
var container = TinyIoCContainer.Current; container.AutoRegister(); ICat cat = container.Resolve<ICat>();
Jeg benytter her muligheden for at auto registere objekterne og interfacene i DI containeren, jeg kunne også have regisreret dem enkeltvis, men det ville i dette tilfælde have gjort eksemplet for komplekst, til at man ville kunne se en fordel ved at bruge TinyIoC istedet for Poor Man's DI.
Ingen kommentarer:
Send en kommentar