控制反轉就是關於一個對象如何獲取他所依賴的對象的引用,這個責任的反轉。這也是多態的體現。
好比去超市買東西,從我自己拿需要的物品變成了服務員給我。
控制反轉包括依賴注入和依賴查找,這次我先理解一下依賴注入:
1 using System; 2 3 namespace 多態 4 { 5 class MainClass 6 { 7 public static void Main (string[] args) 8 { 9 IPerson student = new Student (); 10 student.run (); 11 IPerson teacher = new Teacher(); 12 teacher.run (); 13 Console.Read (); 14 } 15 } 16 17 public interface IPerson 18 { 19 void run(); 20 } 21 22 public class Student:IPerson 23 { 24 public void run() 25 { 26 Console.WriteLine ("Student Write!"); 27 } 28 } 29 30 public class Teacher:IPerson 31 { 32 public void run() 33 { 34 Console.WriteLine ("Teacher Write!"); 35 } 36 } 37 }
如代碼所示:IPerson接口可以實例Student類或者Teacher類,而不像以前那樣Student s = new Student();這樣,如果下次想要實例Teacher還要去代碼中修改,再編譯,太麻煩,這樣IPerson p = new *** 這個***是從配置文件(xml一類的文件)中讀取出來,然后運用反射的方法動態取到要調用的類(或DLL文件),打到方便的目的。這就是我所理解的依賴注入。
--Ones