1 using System.Reflection;
2 using FactoryEntity;
3 using ProcessServices;
4
5 namespace FactoryPatterns
6 {
7 #region 产品定义
8 /// <summary>
9 /// 产品列表接口
10 /// </summary>
11 public interface IProductList { ResponseBseEntity ProductList(RequestBaseEntity requst, ref HeaderBaseEntity header); }
12 /// <summary>
13 /// 产品接口
14 /// </summary>
15 public interface IProduct { ResponseBseEntity Product(RequestBaseEntity request, ref HeaderBaseEntity header); }
16 /// <summary>
17 /// 流程下单接口
18 /// </summary>
19 public interface IOrderCreate { ResponseBseEntity OrderCreate(RequestBaseEntity request, ref HeaderBaseEntity header); }
20 #endregion
21
22 #region 不同工厂具体实现
23 public class TaoBaoProductServices : ProcessMain, IProduct
24 {
25 public override bool ActionAfter(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response){return true;}
26 public override bool ActionBef(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
27 public override void ActionFail(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) {}
28 public override bool ActionSuccess(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
29 public override bool BusinessVerication(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
30 public override bool Execution(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
31 public ResponseBseEntity Product(RequestBaseEntity requst, ref HeaderBaseEntity header)
32 {
33 return base.Action(requst,ref header);
34 }
35 }
36 public class TaoBaoProductListServices : ProcessMain, IProductList
37 {
38 public override bool ActionAfter(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
39 public override bool ActionBef(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
40 public override void ActionFail(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { }
41 public override bool ActionSuccess(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
42 public override bool BusinessVerication(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
43 public override bool Execution(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
44 public ResponseBseEntity ProductList(RequestBaseEntity requst, ref HeaderBaseEntity header)
45 {
46 return base.Action(requst, ref header);
47 }
48 }
49 public class TaoBaoOrderCreateServices : ProcessMain, IOrderCreate
50 {
51 public override bool ActionAfter(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
52 public override bool ActionBef(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
53 public override void ActionFail(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { }
54 public override bool ActionSuccess(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
55 public override bool BusinessVerication(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
56 public override bool Execution(RequestBaseEntity request, ref HeaderBaseEntity header, ref ResponseBseEntity response) { return true; }
57 public ResponseBseEntity OrderCreate(RequestBaseEntity requst, ref HeaderBaseEntity header)
58 {
59 return base.Action(requst, ref header);
60 }
61 }
62 #endregion
63
64 #region FactoryServices
65 public class FactoryPatterns
66 {
67 public IAction FactoryServices { get; set; }
68 public FactoryPatterns(RequestBaseEntity request)
69 {
70 FactoryServices = (IAction)Assembly.Load(request.Namespace).CreateInstance(string.Format("{0}.{1}", request.Namespace, request.Services));
71 }
72 }
73 #endregion
74
75 #region 框架测试
76 public class FactoryTest
77 {
78 public static void UnitTest()
79 {
80 var header = new HeaderBaseEntity();
81 var request = new RequestBaseEntity() { Namespace = "FactoryPatterns", Services = "TaoBaoProductServices" };
82 var factory = new FactoryPatterns(request).FactoryServices;
83 factory.Action(request, ref header);
84 }
85 }
86 #endregion
87 }