Design Pattern - 反射模式

簡化工廠類拋回子類的判斷

以往的專案我都是經由工廠如此拋出,因此常常有新的類出現後,我就需要動用這個工廠類。

namespace BWOS_WS.SP.BLL
{
    public class ServiceFactory
    {
        

        public ws_common RtnType(string p_type,string InputContent,string p_QueryType = "") {

            ws_common Factory = null;

            switch (p_type)
            {
                case "SPSD0040":
                    Factory = new BLL_SPSD0040();
                    break;
                case "SPSR0020":
                    
                    Factory = new BLL_SPSR0020();

                    Factory.p_QueryType = p_QueryType;

                    break;                
            }

            return Factory.Query(InputContent);
        }
    }
}

 

後來在同事的提點下進化成如下  -->Assembly.Load("程序集名稱").CreateInstance("命名空間.類名稱")

public ws_common RtnType()
{
       ws_common baseWeb_Service = (ws_common)Assembly.Load("XXXX").CreateInstance(this.GetType().Namespace.ToString() + ".類別名稱");
      
       return baseWeb_Service;
         
}

 

如此就簡化了工廠類的異動

參考連結