設計模式--IOC
阿新 • • 發佈:2019-01-31
1. 實際控制類中,建構函式中 引數是 介面型別
2. 註冊的哪個類實現的介面, 在實際控制類中就應用哪個類中的方法
具體依賴抽象
/*ToggleBar依賴render才能正常工作,但render的構造卻不受它控制,它把控制權交給了具體的使用者,這就是控制反轉。render通過構造方法傳入,這個就叫依賴注入。*/
3. 工廠是抽象類,裡面有一些工廠的共性,不同工廠實現抽象工廠的方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Unity; namespace IOC { class Program { static void Main(string[] args) { UnityContainer container = new UnityContainer(); container.RegisterType<IBookCategary, PhilosophyBook>(); // 註冊的是PhilosophyBook類,也可以註冊其他類 container.RegisterType<IBookCategary, HistoryBook>(); // 註冊的是HistoryBook類,也可以註冊其他類 IPeople people = container.Resolve<Reader>(); people.ReadBook(); Console.Read(); } } //人介面 public interface IPeople { void ReadBook(); } public interface IBookCategary { string PrintBookName(); } public class PhilosophyBook : IBookCategary { public string PrintBookName() { return "這是一本哲學書"; } } public class HistoryBook : IBookCategary { public string PrintBookName() { return "這是一本歷史書"; } } public class Reader:IPeople { IBookCategary _book; /// <summary> /// 建構函式註冊 /// </summary> /// <param name="pw"></param> public Reader(IBookCategary book) { _book = book; } public void ReadBook() { if (_book != null) { Console.WriteLine(_book.PrintBookName()); } ; } } }