现在应该讲主控制类了,为了不把系统弄得太复杂,所以就用一个类作为主要控制类(服务类),作为前端、后端、业务逻辑的控制类。
WorkflowService类的类图如下:
该类的构造函数:
1 public WorkflowService(IWorkflowDB workflowDb, IWorkflowMethods workflowMethods) 2 { 3 _iWorkflowDb = workflowDb; 4 _iWorkflowMethods = workflowMethods; 5 }
通过简单工厂方法返回类的实例:
1 /// <summary> 2 /// 程序主调用方法 3 /// </summary> 4 /// <returns></returns> 5 public static WorkflowService GetWorkflowService() 6 { 7 IWorkflowDB iWorkflowDb; 8 try 9 { 10 string dbSavingProvider = WorkFlowUtility.GetConfiguration("DataBaseProvider").ToLower(); 11 switch (dbSavingProvider) 12 { 13 case "oracle": 14 iWorkflowDb = new OracleWorkFlowDBUtility(); 15 break; 16 case "sqlserver": 17 //iWorkflowDb = new SqlServerWorkFlowDBUtility(); 18 //break; 19 default: 20 iWorkflowDb = (IWorkflowDB) Assembly.Load(dbSavingProvider).CreateInstance(dbSavingProvider); 21 break; 22 } 23 24 } 25 catch (Exception) 26 { 27 throw new WorkFlowConfigurationNotImplementException("数据库配置失败!"); 28 } 29 30 IWorkflowMethods iWorkflowMethods; 31 try 32 { 33 string dbInterface = WorkFlowUtility.GetConfiguration("WorkflowConfigurationNameSpace"); 34 iWorkflowMethods = (IWorkflowMethods)Assembly.Load(dbInterface).CreateInstance(dbInterface + ".WorkflowConfiguration"); 35 } 36 catch (Exception ex) 37 { 38 throw new WorkFlowConfigurationNotImplementException("应用程序实例配置失败!"); 39 } 40 41 return new WorkflowService(iWorkflowDb, iWorkflowMethods); 42 }