程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 設計模式初探——既然創建時必然的,所以它獨立了!

設計模式初探——既然創建時必然的,所以它獨立了!

編輯:C#入門知識

   面向對象設計,一個必不可少的步驟是“實例化”,如果將實例化與具體的實現緊密地結合在一起……簡單的創建,當然這是沒有問題的,但是,如果我們不是簡單的創建呢,我們需要改變具體的算法,需要擴展算法的種類,需要系統在改變之後還是以前的樣子運行!那麼,問題就會變得復雜,多變!         在創建型的幾個設計模式中,將具體算法的實現與實例化分離,工廠方法是這方面的典范,其他的創建型設計模式起到擴展和輔助的作用!             在書中舉得那些例子,都很有趣,大家可以好好看看,在這裡咱們說說一些擴展的知識。           反射:我個人膚淺的理解是,應用程序在運行時,可以動態地獲得一個類型的屬性,方法,事件等信息,這樣就可以在工廠中動態地創建一個對象了!           c#代碼: [csharp]   Assembly.Load("程序集") //Assembly.LoadFile("外部調用的動態庫")加載程序集,返回類型是一個Assembly             實際應用:     [csharp]   //引入反射   using System.Reflection;      //引入config配置文件   using System.Configuration ;           //反射優化抽象工廠          //根據配置文件選擇創建查詢方式       class DateAccess       {           private static readonly string AssemblyName = "shujuku";              //利用配置文件:1,添加引用system.configuration ; 2, using system.configuration            //讀取配置文件app.config裡的DB           private static readonly string db = ConfigurationManager.AppSettings["DB"];           //private static readonly string db = "Sqlserver";              //靜態函數創建用戶表           public static IUser CreateUser()           {               string classname = AssemblyName + "." + db + "User";                   //利用反射創建對象               return (IUser)Assembly.Load(AssemblyName).CreateInstance(classname);           }              //靜態函數創建表           public static IDepartment  CreateDepartment()           {               string classname = AssemblyName + "." + db + "Department";                   //利用反射創建對象               return (IDepartment )Assembly.Load(AssemblyName).CreateInstance(classname);           }       }               在程序設計中,創建型模式已經給我們帶來了意想不到的好處,讓我們的工作更輕松,簡單,但是不要忘了一種模式只是解決一種特定的問題,下次我們將介紹更多的模式,解決更多的問題!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved