面向接口开发的一个架(三)

事务逻辑层

同、IBusinessFacade:定义业务逻辑接口

IBusinessBase.cs

图片 1图片 2IBusinessBase
 1图片 3namespace IBusinessFacade
 2图片 4图片 5图片 6{
 3图片 7    public interface IBusinessBase
 4图片 8图片 9    图片 10{
 5图片 11        void Init(string type);
 6图片 12        DataSet Get();
 7图片 13        DataSet Get(int id);
 8图片 14        void Add(DataSet ds);
 9图片 15        void Add(string[] temp);
10图片 16        void Delete(int id);
11图片 17        void Update(DataSet ds);
12图片 18    }
13图片 19}

 

ILog.cs

1图片 20namespace IBusinessFacade
2图片 21图片 22图片 23{
3图片 24    public interface ILog : IBusinessBase
4图片 25图片 26    图片 27{
5图片 28        
6图片 29    }
7图片 30}

 

老二、BusinessLogic:业务实现交汇

1、BaseBuiness.cs

图片 31图片 32IBusinessBase
  1图片 33namespace BusinessLogic
  2图片 34图片 35图片 36{
  3图片 37    public class BaseBusiness : IBusinessBase
  4图片 38图片 39    图片 40{
  5图片 41        public string BusinessType = string.Empty;
  6图片 42
  7图片 43        private Assembly assembly;
  8图片 44        private Object obj;
  9图片 45        private const string FAILED_LOAD_ASSEMBLY = “Can’t load assembly.”;
 10图片 46        private const string FAILED_CREATE_CLASS = “Can’t create class”;
 11图片 47        private const string FAILED_ACCESS_STR = “Failed access DAL. return null value.please checked BusinessType or make sure DataAccess assembly in your application folder.”;
 12图片 48
 13图片 49        public BaseBusiness()
 14图片 50图片 51        图片 52{
 15图片 53            assembly = null;
 16图片 54            obj = null;
 17图片 55        }
 18图片 56
 19图片 57        public BaseBusiness(string businessType)
 20图片 58图片 59        图片 60{
 21图片 61            Init(businessType);
 22图片 62        }
 23图片 63
 24图片 64图片 65        IBusinessBase Members#region IBusinessBase Members
 25图片 66
 26图片 67        public void Init(string businessType)
 27图片 68图片 69        图片 70{
 28图片 71            if (string.IsNullOrEmpty(businessType))
 29图片 72图片 73            图片 74{
 30图片 75                throw new Exception(“BusinessType should not be empty!”);
 31图片 76            }
 32图片 77            BusinessType = businessType;
 33图片 78            assembly = Assembly.Load(“DataAccess”);
 34图片 79            if (assembly == null)
 35图片 80图片 81            图片 82{
 36图片 83                throw new Exception(FAILED_LOAD_ASSEMBLY);
 37图片 84            }
 38图片 85            BusinessType = string.Format(“DataAccess.{0}DA”,businessType);
 39图片 86            obj = assembly.CreateInstance(BusinessType);
 40图片 87            if (obj == null)
 41图片 88图片 89            图片 90{
 42图片 91                throw new Exception(FAILED_CREATE_CLASS);
 43图片 92            }
 44图片 93        }
 45图片 94
 46图片 95        public DataSet Get()
 47图片 96图片 97        图片 98{
 48图片 99图片 100            MethodInfo getMethod = assembly.GetType(BusinessType).GetMethod(“Get”,new Type[]图片 101{});
 49图片 102            Object ret = getMethod.Invoke(obj,null);
 50图片 103            if (ret == null)
 51图片 104图片 105            图片 106{
 52图片 107                throw new Exception(FAILED_ACCESS_STR);
 53图片 108            }
 54图片 109            DataSet ds = (DataSet)ret;
 55图片 110            return ds;
 56图片 111        }
 57图片 112
 58图片 113        public System.Data.DataSet Get(int id)
 59图片 114图片 115        图片 116{
 60图片 117图片 118            MethodInfo getMethod = assembly.GetType(BusinessType).GetMethod(“Get”,new Type[]图片 119{typeof(int)});
 61图片 120图片 121            Object ret = getMethod.Invoke(obj, new object[]图片 122{id});
 62图片 123            if (ret == null)
 63图片 124图片 125            图片 126{
 64图片 127                throw new Exception(FAILED_ACCESS_STR);
 65图片 128            }
 66图片 129            DataSet ds = (DataSet)ret;
 67图片 130            return ds;
 68图片 131        }
 69图片 132
 70图片 133        public void Add(DataSet ds)
 71图片 134图片 135        图片 136{
 72图片 137            MethodInfo getMethod = assembly.GetType(BusinessType).GetMethod(“Add”);
 73图片 138图片 139            Object ret = getMethod.Invoke(obj, new object[]图片 140{ds});
 74图片 141            if (ret == null)
 75图片 142图片 143            图片 144{
 76图片 145                throw new Exception(FAILED_ACCESS_STR);
 77图片 146            }
 78图片 147            int result = (int)ret;
 79图片 148            if (result == 0)
 80图片 149图片 150            图片 151{
 81图片 152                throw new Exception(“no record has effected”);
 82图片 153            }
 83图片 154        }
 84图片 155
 85图片 156        public void Delete(int id)
 86图片 157图片 158        图片 159{
 87图片 160            MethodInfo getMethod = assembly.GetType(BusinessType).GetMethod(“Delete”);
 88图片 161图片 162            Object ret = getMethod.Invoke(obj, new object[] 图片 163{ id });
 89图片 164            if (ret == null)
 90图片 165图片 166            图片 167{
 91图片 168                throw new Exception(FAILED_ACCESS_STR);
 92图片 169            }
 93图片 170        }
 94图片 171
 95图片 172        public void Update(DataSet ds)
 96图片 173图片 174        图片 175{
 97图片 176            MethodInfo getMethod = assembly.GetType(BusinessType).GetMethod(“Update”);
 98图片 177图片 178            Object ret = getMethod.Invoke(obj, new object[] 图片 179{ ds });
 99图片 180            if (ret == null)
100图片 181图片 182            图片 183{
101图片 184                throw new Exception(FAILED_ACCESS_STR);
102图片 185            }
103图片 186        }
104图片 187
105图片 188        #endregion
106图片 189    }
107图片 190}

 

2、LogBusiness.cs

1图片 191namespace BusinessLogic
2图片 192图片 193图片 194{
3图片 195    public class LogBusiness :BaseBusiness, ILog
4图片 196图片 197    图片 198{
5图片 199       
6图片 200    }
7图片 201}

 

ILog和LogBusiness类都是拖欠的,是因此来前方扩展使用。

相关文章