寻找银弹

致力于探寻软件开发中的本质问题

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OO的优点就是方便日后的变化,见效由变化所引起的系统的变化的影响,封装这种变化。但在单一简单系统中优势不明显,反而效率低。动态的看,在需求的一次次变动时才能看到设计模式的优势。

一个复杂的对象由各个部分的子对象组成,各个部分经常变化,而组合在一起的算法却相对稳定。

封装隔离这个复杂对象的各个变化的部分,从而保持不变的组合这些对象的算法的稳定。关闭修改,开放扩展

Builder模式主要用于“分步骤构建一个复杂的对象”这其中“分步骤”是一个稳定的算法,而复杂的对象的各个部分则经常变化。

变化在哪里,封装哪里-Builder模式主要在于应对"复杂对象各个部分"的频繁需求变动。难于应对"分步骤构建算法"的需求变动。



Abstract Factory模式解决“系列对象”的需求变化各个对象有耦合的关系。Builder模式解决“对象部分”的需求变化。同属一个大对象的子对象。

可用.Net的动态特质,类型反射的功能消除客户程序的改变,改为动态配置config,调用新的Assembly.

Assembly assembly = Assembly.Load("assemblyName");

Type t = assembly.GetType("BuilderName");

Builder builder = Activator.CreateInstance(t);

House house = GameManager.CreateHouse(builder);

.Net框架中Builder应用

System.Web.UI.Page就是一个Builder

其中的BuildPartOnInit();Onload();Render();

Asp.Net会自动去bin目录中调用dll.根据页面显示的稳定的算法,进行调用相应的具体方法。


类别:Programming 查看评论
文章来源:http://hi.baidu.com/hongchaol/blog/item/9f8443a963b8cffc1f17a204.html
posted on 2006-07-13 17:15  hchlee  阅读(185)  评论(0编辑  收藏  举报