20060217--C#面向对象设计模式纵横谈(结构型模式) Comp.pdf





《20060217--C#面向对象设计模式纵横谈(结构型模式) Comp.pdf》由会员分享,可在线阅读,更多相关《20060217--C#面向对象设计模式纵横谈(结构型模式) Comp.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#面向对象设计模式纵横谈9.Composite 组合(结构型模式)李建忠设计模式论坛:上海祝成科技 高级培训讲师组团给大家拜年 从俄罗斯套娃谈起对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象即它们在充当对象的同时,又是其他对象的容器。public class SingleBox:IBox public void process()public class ContainerBox:IBox public void process()public ArrayList getBoxes()如果我们要对这样的对象容器进行处理:IBox box=Factory.GetBox(
2、);If(box is ContainerBox)box.process();ArrayList list=(ContrainerBox)box).GetBoxes();./将面临比较复杂的递归处理将面临比较复杂的递归处理else if(box is SingleBox)box.process();动机(Motivation)上述描述的问题根源在于:客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性等弊端。如何将“客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使得客户代码就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20060217-C#面向对象设计模式纵横谈结构型模式 Comp 20060217 C# 面向 对象 设计 模式 纵横谈 结构

限制150内