当前位置: 网学 > 编程文档 > 其他类别 > 正文

系统架构师谈企业应用架构之服务层

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
们来看看服务类中接口的实现:

  1. public class Pay : IPay  
  2. {  
  3. public bool PayMent(Rule.Product product)  
  4. {  
  5. //具体的下单操作  
  6. Rule.Order order = new Rule.Order();  
  7. //持久化操作  
  8. order.Add(product);  
  9. //发送手机短信,发送给卖家,通知有人买什么产品等  
  10. SendMessage.Instance.SendMsg(string.Empty, string.Empty);  
  11. return true;  
  12. }  
  13. #region IPay 成员  
  14. public void IPay.Pay(Rule.Product product)  
  15. {  
  16. this.PayMent(product);  
  17. }  
  18.  #endregion  

那么上面我们在服务层组合多个简单的服务提供给一个方法,那么UI层只要简单的调用服务层接口中提供的方法即可,就能完成服务的调用。我们来看看UI层的代码

  1. public class Order  
  2. {  
  3. public void Pay()  
  4.  {  
  5. Service.PayFactory factory=new Service.PayFactory();  
  6. //调用服务层中的支付  
  7. Service.IPay pay = factory.CreatePay();  
  8. //这里只是测试,所以没有屏蔽New的代码  
  9. pay.Pay(new Rule.Product());  
  10. }  

那么通过上面的简单形式我们就完成了一个简单的装饰模式的服务层的设计,是不是很简单呢?可能看起来代码有点多,不过这样的设计很利于我们在后期的扩展

性和适应性,特别是等到系统的功能更复杂更多时。好的设计就能体现出它的价值了。

当然上面我们通过了直接使用领域模型中的对象作为数据传输,当然我们可以通过数据传输对象的自定义对象来完成,情况更好,我这里就不举例说明了,下面我

们来讲述下一个模式:传输对象模式。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/1412211467.png" />

那么我们前面也讲过了数据传输对象,其实这个模式只是讲解了数据传输对象的用法。

传输对象模式:

该模式主要是针对系统中各分层之间的数据传输模式的设计,通过传输对象可以降低各层之间分发数据的次数,提高系统性能,通常来说该模式非常有用。但是也

有它的弊端。比如说当领域模型太多的时候,如果把领域模型中的每个对象的数据载体,都设计成传输对象,那么系统将是一个非常庞大的工程,因为过度设计,让系

统难于维护与控制。我们来总结下使用该模式的优缺点:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/FA12211512.png" />

那么有优点肯定就有缺点,我们来看看传输对象可能带来的劣势:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/6D12211901.png" />

现在目前我们在使用数据传输对象的时候,都必须手动的去维护及创建,目前没有比较好的工具去完成自动创建的功能。比如说能将同一个对象,根据不同UI的需

求自动的将一些属性屏蔽或者启用等。可能通过XML配置文件来完成会是可行的方案,不过目前还没有一个比较好的工具去自动的根据领域模型中的对象自动的创建传

输对象,然后还能提供这个传输对象根据不同UI界面要求完成不同的自定义配置功能,希望各位如果了解的可以给小弟指点下,跪求!

传输对象模式我想具体的实例代码我就简单的书写下吧,就是把对象中的行为去掉,只包含数据信息,就和我们平时说的3层结构中的Model层一样,只有get;set;

访问器和私有成员变量,我们来看看实例代码吧?

  1. /// <summary>  
  2. /// 产品信息  
  3. /// </summary>  
  4. public class Product  
  5. {  
  6. private int _pro_id;  
  7. private string _pro_property = string.Empty;  
  8. private string _pro_cid;  
  9. private int? _pro_brandid;  
  10. private string _pro_name;  
  11. private string _pro_model;  
  12. /// <summary>  
  13. /// 产品ID  
  14. /// </summary>  
  15. public int pro_ID  
  16. {  
  17. set 
  18. {  
  19. _pro_id = value;  
  20. }  
  21. get 
  22. {  
  23. return _pro_id;  
  24. }  
  25. }  
  26. /// <summary>  
  27. /// 扩展属性值  
  28. /// </summary>  
  29. public string pro_Property  
  30. {  
  31. set 
  32. {  
  33. _pro_property = value;  
  34. }  
  35. get 
  36.  {  
  37. return _pro_property;  
  38. }  
  39. }  
  40. /// <summary>  
  41. /// 商品分类  
  42. /// </summary>  
  43. public string pro_CID  
  44. {  
  45. set 
  46. {  
  47. _pro_cid = value;  
  48.  }  
  49. get 
  50. {  
  51. return _pro_cid;  
  52. }  
  53. }  
  54. /// <summary>  
  55. /// 商品品牌  
  56. /// </summary>  
  57. public int? pro_BrandID  
  58. {  
  59. set 
  60. {  
  61. _pro_brandid = value;  
  62. }  
  63. get 
  64. {  
  65.  return _pro_brandid;  
  66. }  
  67. }  
  68. /// <summary>  
  69. /// 商品名称  
  70. /// </summary>  
  71. public string pro_Name  
  72. {  
  73. set 
  74. {  
  75. _pro_name = value;  
  76. }  
  77. get 
  78. {  
  79.  return _pro_name;  
  80. }  
  81.  }  
  82. /// <summary>  
  83. /// 商品型号  
  84. /// </summary>  
  85. public string pro_Model  
  86.  {  
  87.  set 
  88. {  
  89. _pro_model = value;  
  90. }  
  91. get 
  92. {  
  93. return _pro_model;  
  94. }  
  95. }  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号