最近阅读了黄忠成的Object Builder系列文章感到受益匪浅,所以将该系列文章整理了一番(将繁体转换为简体,另外对于一些习惯用法进行了调整,对文章及代码格式重新进行了调整,修订了文中几处小错误),现放上来供大家参考。
[转][黄忠成]Object Builder Application Block (1) [转][黄忠成]Object Builder Application Block (2) [转][黄忠成]Object Builder Application Block (3) [转][黄忠成]Object Builder Application Block (4)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
另外受这一系列文章的启迪,目前正在构思几篇新文章,初步题目定为《创建对象的方法及其应用》。目前文章用到的代码调试已经完成了大半,如果有时间我会开始着手文章写作工作。基本内容分以下几部分:
- 1、CreateOjbWithNew
使用new命令完成对象的创建。(既然是一个系列,缺少此部分就不完整了)
- 2、CentralizeObjCreation2Factory
针对接口编程(使主程序依赖于公共接口与工厂)
集中对象的创建(出现问题好找)
问题(仍然摆脱不了工厂对其它对象的依赖,仅仅实现了创建对象的集中管理而已)
- 3、IndependentFactoryModel
使用Assemby以及CreateInstance方法创建对象,实现了工厂与产品间解耦。
- 4、AddinSample
案例分析,使用上面模型实现一个插件结构的应用程序。该程序运行机制仿照SharpDevelop(当然是大大简化了)的AddinTree结构,只要在Addins目录下存放的文件会被自动的Pickup并容入主界面。
- 5、BeforeDependencyInjection
为了后面的案例做准备工作。在没有Dependency Injection框架时,自己手工创建对象。
- 6、DependencyInjectionWithConfig
自己实现的一个“依赖注入”框架(非常简单,纯粹演示目的),使用配置文件指导对象创建工作。
- 7、DependencyInjection与Ioc
通过上面两个例子我们了解了什么是依赖注入,可为什么依赖注入为什么最开始叫做控制反转呢?本段内容揭示其中的联系以及“容器”这个概念的特殊含义。
- 8、ObjectBuilder
可以将ObjectBuilder理解成一个智能加工工场,根据用户的不同订单策略在流水线上加工各种对象。该部分内容对ObjectBuilder做一个宏观的介绍。先将文中一张图放上来:
- 9、TranslatorSampleUsingOB
对OB的一个实际应用案例。模拟TechEd英文会场,参会人员可根据需要选择不同的翻译服务,充分享受"容器"以及"依赖注入"的强大功能,系统借助ObjectBuilder实现。