在设计整个企业库的过程中,使用了一系列的最佳实践。下面列出一些里面的最佳实践:

  •   在核心库中使用了Common模块
  •   使用了统一的命名约定和统一的版本
  •   在设计的过程中使用单元测试
  •   在所有模块中包含基础结构

  在企业库的模块中包含了下面的模式,当然还包括其他模式:

  •   工厂模式,一个创建型模式,使用指定的类型创建另外一个对象。
  •   插件模式,这种模式扩展了类的行为。在特殊的环境中创建一个子类,只包含所需的功能。
  •   依赖注入模式,使用这个模式,你可以在类中注入对象,而不是依赖类创建对象。

  一、工厂模式

  工厂模式是软件设计模式中,创建模式的一种。企业库中广泛的使用了工厂模式。例如,在Caching模块,CacheFactory初始化一个CacheManger对象的实例,CacheManager创建一个CacheManagerFactory对象,然后创建一个Cache对象。Cache是后端数据在内存中的副本。创建Cache对象之后,应用程序可以使用CacheManager对象获取缓存中的数据,向缓存中添加数据,从缓存中移除对象。更多的信息请参看缓存模块。

  数据访问模块以类似的方式使用工厂模式,客户端代码调用DatabaseFactory的静态方法CreateDatabase创建Database对象的实例。更多的信息参看数据访问模块。

  二、插件模式

  插件模式是一种在运行的时候创建对象或者接口的实例的软件模式。插件模式扩展了现有代码的行为,以便它可以实现更多的目的。它和使用类继承不一样,类继承可以对行为进行修改或者是重写,插件模式行为的修改是有限的。

  使用插件模式,修改的行为(插件)和一个分布partial类相连接,轮流的和核心类连接。插件使用这个接口实现被核心类调用的方法,同时也可以调用核心类的新方法。

  三、依赖注入模式

  依赖注入模式允许你向类中注入对象,而不是依赖这个类来创建对象。这在下面的情况非常有帮助,在你想解耦一个你的应用中的特殊实现或者是部署的细节。依赖注入模式解耦服务或者是其他代码可能会依赖的在容器中存放。然后,处理代码相互依赖的责任,包括对象创建和连接,从对象本身移除,转移到其他实体。不像工厂模式,使用依赖注入模式,容器中的代码是被多个应用共享的。

  在System.ComponentModel命名空间中,是一个微软关于依赖注入模式的实现。在企业库中,ObjectBuilder 和 Unity模块可以用来实现依赖注入模式。

转载于:https://www.cnblogs.com/DoNetCShap/archive/2011/12/14/2287821.html

微软企业库4.1学习笔记(十)企业库的设计相关推荐

  1. python中seaborn库_[Python学习笔记(四)] Seaborn库基础学习——01

    用 matplotlib能够完成一些基本的图表操作,而 Seaborn 库可以让这些图的表现更加丰富. 1. import seaborn as sns 用于导入 seaborn 库,并取别名为 sn ...

  2. ROS学习笔记十:用C++编写一个简单的服务和客户端

    ROS学习笔记十:用C++编写一个简单的服务和客户端 这一节主要介绍如何使用C++编写一个简单的服务和客户端节点. 编写服务节点 由于在前面的练习中,已经向beginner_tutorials软件包中 ...

  3. Apache Nutch 1.3 学习笔记十(插件机制分析)

    1. 一些对象说明 PluginRepository:这是一个用于存储所有插件描述对象(PluginDescriptor),插件扩展点(ExtensionPoint)和被激活的插件. PluginDe ...

  4. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  5. 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  6. 多线程编程学习笔记——任务并行库(二)

    接上文 多线程编程学习笔记--任务并行库(一) 三.   组合任务 本示例是学习如何设置相互依赖的任务.我们学习如何创建一个任务的子任务,这个子任务必须在父任务执行结束之后,再执行. 1,示例代码如下 ...

  7. 多线程编程学习笔记——任务并行库(三)

    接上文 多线程编程学习笔记--任务并行库(一) 接上文 多线程编程学习笔记--任务并行库(二) 六.   实现取消选项 本示例学习如何实现基于Task的异步操作进行取消流程,以及在任务真正运行前如何知 ...

  8. 日志库 winston 的学习笔记 - logger.info 的实现原理单步调试

    按照这篇文章日志库 winston 的学习笔记 - 创建一个使用 winston 的 Node.js 应用里的代码,对下列方法进行单步调试: 因为我们调用的是 info 方法,所以生成的日志,leve ...

  9. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  10. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

最新文章

  1. 编写程序来模拟计算机LRU算法,操作系统-页式虚拟存储管理程序模拟.doc
  2. 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)
  3. 机器人环境感知算法发展概述
  4. mysql bin 分析_mysql bin log 分析
  5. 智慧城市热度不减 产业资本进军智能汽车相关领域
  6. 清华大学团队:人脸识别爆出巨大丑闻,15分钟解锁19款手机
  7. 诺顿企业版Symantec AntiVirus病毒库更新慢的解决办法
  8. 使用nvim来代替VSCode,神操作
  9. 软件间对接时,常用的接口类型和协议类型有哪些
  10. 逍遥模拟器微信提示无法连接服务器,轻松解决夜神逍遥模拟器模拟器等模拟器无法连接问题...
  11. 我用分析了42万字的歌词,为了搞清楚民谣歌手们在唱些什么
  12. 如何摆脱NAS中的振动和噪音
  13. APP爬虫- 手机安装证书-解决SSL证书的移动端数据包问题
  14. C#重点知识详解(转)
  15. 通达信资金净流入公式_通达信资金净流入指标公式$$$$$$
  16. 一分钟,华北科技学院会发生什么?
  17. 清除浮动的常用的几种方法
  18. 实现Python3.7下从Tushare库的LPR贷款基础利率接口获取实时数据
  19. 安装gcc7.3.0
  20. HttpClient使用不当,服务挂了,是时候系统学习一下了

热门文章

  1. Spring 事务相关及@Transactional的使用建议
  2. JavaScript 随意整理2
  3. 生成n对括号的合法全排列
  4. Android 启动白屏,简单解决方法
  5. humanize时间库使用及汉化
  6. url oracle default schema,oracle @Table中使用schema时insert报错
  7. nginx.conf文件内容详解
  8. 谷粒商城---新增收货地址,设置默认地址实现
  9. 09 | 队列:队列在线程池等有限资源池中的应用
  10. 聊聊并发(四)——深入分析ConcurrentHashMap