目前,软件分层的思想已经得到普及,在我所做过的项目中也得到了很好的效果。但是也有明显的缺点,应付从下而上的变化时,往往需要级连修改,尤其是数据库结构发生变化,另外如果采用了NHibernate之类ORM平台,这方面好好一些。
        在复杂的业务逻辑层,往往对象的粒度很小,在表现层使用起来不太方便,会产生重复代码(例如常规的初始化,数据访问数等),加大了表现层开发人员的学习难度和开发工作量。此时往往是为业务逻辑层增加服务层(包装层),减少重复代码和不必要的复杂度。
        增加服务层的缺点也是明显的:减少了灵活性。
        本例使用了服务层包装业务逻辑,简化了表现层开发。服务层包装类需要数据库连接参数等,为此将采用单件模式,使用静态属性进一步封装服务层对象,并考虑了多线程的情景。这种情况下,以后服务层接口的变更仅需要修改服务层包装类。

// 服务层包装类
        public class MyUserService
        {
                 public MyUserService(string strConn)
                 {
                      // ......
                 }
                // ......
        }
        ......
        public class BusinewwWapper
        {
                private static MyUserService m_User;
                private static string m_StrConn;

             static BusinewwWapper()
             {
              // 必要的初始化
                    m_StrConn =......;
             }

private static void SetUser()
                {
                        lock(typeof(SmWFM))
                        {
                                 if(m_User == null )
                                         m_User = new MyUserService(m_StrConn );
                        }
                }

public static MyUserService User
                {
                        get
                        {
                                 if(m_User == null )
                                         SetUser();
                                return m_User;
                        }
                }
                // ......
        }
        
        其实,有了Spring.NET这样的框架,这样做就没必要了。

转载于:https://www.cnblogs.com/fym37/archive/2006/05/24/408036.html

单件模式与业务逻辑服务层封装相关推荐

  1. 前后端分离业务逻辑常用封装函数(一)

    1.数组去空: function clear_arr_trim(array) {   for(var i = 0 ;i<array.length;i++){ if(array[i] == &qu ...

  2. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    转:减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同 本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存 ...

  3. MySQL:尽量不要用存储过程封装业务逻辑

    本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...

  4. Delphi中DLL封装业务逻辑的实现

      三层结构是开发C/S或B/S系统经常采用的策略,这种分层方式将系统分为用户服务.业务服务和数据服务三部分,能够解决客户端与服务器结构维护成本问题.改善客户端与服务器结构延展性问题:解决应用逻辑重复 ...

  5. 架构设计-业务逻辑层简述

    业务逻辑层是专门处理软件业务需求的一层,处于数据库之上,服务层之下,完成一些列对Domain Object的CRUD,作为一组微服务提供给服务层来组织在暴露给表现层,如库存检查,用法合法性检查,订单创 ...

  6. petshop详解之五:PetShop之业务逻辑层设计

    五 PetShop之业务逻辑层设计业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计 ...

  7. petshop4.0 详解之五(PetShop之业务逻辑层设计)[转]

    业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域( ...

  8. petshop4.0 详解之五(PetShop之业务逻辑层设计)

    五 PetShop之业务逻辑层设计 业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设 ...

  9. PetShop之业务逻辑层设计

    <解剖PetShop>系列之五 五 PetShop之业务逻辑层设计 业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的 ...

最新文章

  1. 逻辑模型设计步骤-关系模式定义
  2. 精准容量、秒级弹性,压测工具 + SAE 方案如何成功突破传统大促难关?
  3. ClickHouse入门
  4. 前端菜鸟是这样入门学习的,点进来!
  5. VS2008开发Silverlight程序用到的插件
  6. Jquery截取中文字符串
  7. Kubernetes Job Controller源码分析
  8. 两台服务器怎么发文件,两台服务器怎么发文件
  9. 【无线通信】基于matlab无线传感网络WSN仿真【含Matlab源码 1237期】
  10. 国军标GJB150三防试验(霉菌+盐雾+湿热)
  11. c语言 10个小程序,分享10个基础C语言的小程序
  12. 嵌入式系统架构设计师的理解
  13. myeclipse快速查找并快速定位
  14. AidLux“换脸”案例源码详解 (Python)
  15. B站Django项目天天生鲜学习|celery异步发送邮件遇到的问题
  16. 什么是上下变频器?以及对5G应用的作用
  17. oracle ebs 请求 待定,EBS 并发请求 计划 fnd_conc_release_classes(示例代码)
  18. 用c#实现拍拍抢拍精灵实现过程--核心代码--腾讯qq拍拍网秒杀器代码【欢迎转载】
  19. MATLAB 处理大数据
  20. UI灵感分析笔记#3(22.1.2)

热门文章

  1. phalcon的一些中文手册和帮助文档地址收集
  2. Gridview隐藏列和隐藏列的取值问题
  3. 诗与远方:无题(六十三)- 杂诗,然,矣
  4. Ranger开源贡献统计
  5. mysql批量用trim限定_mybatis中批量更新sql语句,trim、foreach标签,varchar定义理解
  6. 机器学习线性回归_机器学习实例--线性回归
  7. C# 操作Sqlite
  8. android pdf重排软件,PDF拆分重排(paper for kindle)
  9. ZJOI2008皇帝的烦恼
  10. Mongodb3.4 复制集及分片配置