在客戶程序中,我們有效地避免了具體產品對象和應用程序之間的耦合,可是我們也看到,增加了具體工廠對象和應用程序之間的耦合。那這樣究竟帶來什么好處呢?我們知道,在應用程序中,Log對象的創建是頻繁的,在這里我們可以把
LogFactory factory = new EventFactory();
這句話放在一個類模塊中,任何需要用到Log對象的地方仍然不變。要是換一種日志記錄方式,只要修改一處為:
LogFactory factory = new FileFactory();
其余的任何地方我們都不需要去修改。有人會說那還是修改代碼,其實在開發中我們很難避免修改,但是我們可以盡量做到只修改一處。
其實利用.NET的特性,我們可以避免這種不必要的修改。下面我們利用.NET中的反射機制來進一步修改我們的程序,這時就要用到配置文件了,如果我們想使用哪一種日志記錄方式,則在相應的配置文件中設置如下:
1<appSettings>
2 <add key="factoryName" value="EventFactory"></add>
3</appSettings>
4
此時客戶端代碼如下:
1/**//// <summary>
2/// App類
3/// </summary>
4public class App
5{
6 public static void Main(string[] args)
7 {
8 string strfactoryName = ConfigurationSettings.AppSettings["factoryName"];9
10 LogFactory factory;
11 factory = (LogFactory)Assembly.Load("FactoryMethod").CreateInstance("FactoryMethod." + strfactoryName);
12
13 Log log = factory.Create();
14 log.Write();
15 }
16}
17
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/