- 浏览: 389679 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yanmie:
您的文章已被我们收录地址:http://www.airmyth ...
学习一下 Pixel Bender -
chaimzane:
我现在自己都有点看不懂了 实际上很简单, LocaleModu ...
Flex 优化技巧 -- 全局CSS样式模块实现RSLS 方式加载 -
muqingren:
以我现在对flex的了解,没看懂你说的........... ...
Flex 优化技巧 -- 全局CSS样式模块实现RSLS 方式加载 -
cony138:
卤煮碉堡了啊
A*寻路 -- 更加真实 的路径(一) -
jack_ye:
[/flash][/flash][/fl[u][u]ash][ ...
Alternativa3D 8 基础理论 / 概念
Composite 组合模式,将对象组合成树形结构以表示“部分=整体”的层次结构。使得用户在处理单个对象和组合对象时具有一致性。
Composite最好的一个例子就 计算机的文件系统。
适用性:
1、你想表达不封-整体的层次结构
2、你希望client忽略组合对象于单个对象的不同,用户将统一的使用组合结构中的所有对象。
结构:
例子:根据一个xml的描述生成一个文件目录
Compoiste模式,对待目录和文件都应该有一样的接口
IIterator .as package { public interface IIterator { function reset():void; function next():Object; function hasNext():Boolean; } }
ArrayIterator .as package { public class ArrayIterator implements IIterator { private var index:uint = 0; private var collection:Array; public function ArrayIterator(collection:Array) { index = 0; this.collection = collection; } public function next():Object { return collection[index++]; } public function reset():void { index = 0; } public function hasNext():Boolean { return index < collection.length; } } }
NullIterator .as package { public class NullIterator implements IIterator { public function NullIterator() { } public function hasNext():Boolean { return false; } public function next():Object { return null; } public function reset():void { } } }
FileSystemItem .as package { public class FileSystemItem implements IFileSystemItem { protected var parent:IFileSystemItem; protected var name:String; public function FileSystemItem() { } public function iterator():IIterator { return null; } public function addItem(item:IFileSystemItem):void { } public function removeItem(item:IFileSystemItem):void { } public function getName():String { return name; } public function setName(name:String):void { this.name = name; } public function getParent():IFileSystemItem { return parent; } public function setParent(parent:IFileSystemItem):void { this.parent = parent; } } }
IFileSystemItem .as package { public interface IFileSystemItem { function iterator():IIterator function addItem(item:IFileSystemItem):void function removeItem(item:IFileSystemItem):void function getName():String; function setName(name:String):void; function getParent():IFileSystemItem function setParent(parent:IFileSystemItem):void } }
File .as package { public class File extends FileSystemItem { public function File() { } override public function iterator():IIterator { return new NullIterator(); } } }
Directory .as package { public class Directory extends FileSystemItem { private var items:Array; public function Directory() { items = []; } override public function addItem(item:IFileSystemItem):void { this.items.push(item); } override public function removeItem(item:IFileSystemItem):void { for(var i:uint=0;i<items.length;i++) { if(items[i] == item) { items.splice(i,1); break; } } } override public function iterator():IIterator { return new ArrayIterator(items); } } }
FileSystemItemView .as package { import flash.display.*; import flash.text.*; import flash.filters.*; public class FileSystemItemView extends Sprite { private var item:IFileSystemItem; private var icon:Sprite; private var label:TextField; public function FileSystemItemView (item:IFileSystemItem) { this.item = item; initIcon(); initLabel(); } public function get data():IFileSystemItem { return item; } private function initIcon():void { icon = new Sprite(); if(item is Directory) { icon.graphics.lineStyle(); icon.graphics.beginFill(0xFFFF00); icon.graphics.drawRect(0,10,50,30); icon.graphics.beginFill(0xFFFF00); icon.graphics.drawRoundRect(0,0,25,15,5,5); icon.graphics.endFill(); } else { icon.graphics.lineStyle(0,0x000000,1); icon.graphics.beginFill(0xFFFFFF); icon.graphics.drawRect(0,0,40,50); icon.graphics.endFill(); } icon.filters = [new BevelFilter()]; addChild(icon); } private function initLabel():void { label = new TextField(); label.text = item.getName(); label.autoSize = TextFieldAutoSize.LEFT; label.x = 50; addChild(label); } public function setLabel(label:String):void { this.label.text = label; } } }
发表评论
-
Visitor 访问者 行为模式
2009-02-25 00:55 1086Visitor 访问者 行为模式,表示一个作用于某个对象结构中 ... -
Template Method 模板方法 行为模式
2009-02-25 00:54 914Template Method 模板方法 行为模式,定义一个操 ... -
Strategy 策略 行为模式
2009-02-25 00:52 875Strategy 策略 行为模式,定义一系列的算法,把他们一个 ... -
State 状态 行为模式
2009-02-25 00:50 1106State 状态 行为模式,允许一个对象在其内部状态改变时改变 ... -
Observer 观察者 行为模式
2009-02-25 00:48 1630Observer 观察者 行为模式,定义对象的一对多的依赖关系 ... -
Memento 备忘录 行为模式
2009-02-25 00:46 1194Memento 备忘录 行为模式 ... -
Mediator 中介 行为模式
2009-02-25 00:44 1530Mediator 中介 行为 ... -
Iterator 迭代器 行为模式
2009-02-25 00:41 1886Iterator 迭代器 行为模式,提供一种顺序访问一个聚合对 ... -
Interpreter 解释器 行为模式
2009-02-25 00:40 891Interpreter 解释器 行为模式,给定一个语言,定义它 ... -
Command 命令 行为模式
2009-02-25 00:35 1357Command 命令 行为模式,将一个请求封装为一个对象 ... -
Chain of Responsibility 职责链 行为模式
2009-02-25 00:02 945Chain of Responsibility 职责链 行为模 ... -
Proxy 代理
2009-02-24 23:46 2012Proxy 代理,为其他对象提供一个代理以控制这个对象。 ... -
Flyweight (享元)
2009-02-24 17:56 1210Flyweight (享元)模式,是结构型模式,它是运用 ... -
Facade 外观
2009-02-24 15:00 1640Facade 外观,结构型模式,为子系统中的一组接口提供一个一 ... -
Decorator 装饰模式
2009-02-23 23:42 1276Decorator 装饰模式,对象 ... -
Bridge 桥接
2009-02-23 23:11 1127Bridge 桥接,对象结构型模式,将抽象部分与实 ... -
Adapter 适配器
2009-02-23 18:44 1093Adapter 适配器,类对象结构型模式,将一个类的接口转化为 ... -
Prototype 原型 Singleton单件
2009-02-23 14:43 1210Prototype 原型,创建型模式,用原型实例指定创建对象的 ... -
Factory Method 工厂方法
2009-02-23 14:09 1124Factory Method 工厂方法,创建型 模式,她定义一 ... -
Builder 模式
2009-02-23 13:54 1164Builder 模式,生成器,将一个复杂对象的构建鱼他的表示分 ...
相关推荐
### C#面向对象设计模式纵横谈之Composite组合模式解析 #### 标题解析与核心概念 标题中的“C#面向对象设计模式纵横谈(9):Composite组合模式(结构型模式)”明确了文章的主题聚焦于C#语言环境下的设计模式探讨,...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第9节:结构型模式Composite组合模式
3. **组合节点(Composite)**: 具有子组件的节点,也实现了Component接口,除了处理自己的业务逻辑外,还负责管理子组件。它可以包含其他Composite或Leaf对象。 **三、实现** 在C#中,我们可以定义如下的组件接口...
3. **Composite(组合)**:组合节点是包含其他Component对象的容器。它们也实现了Component接口,因此可以被客户端当作普通的Component对象处理。此外,Composite还负责管理其子对象,比如添加、删除和操作子对象。...
**组合模式(Composite Pattern)详解** 组合模式是一种结构型设计模式,它将对象组织成树形结构,使得用户可以对单个对象和对象集合进行统一操作。这种模式在处理部分与整体关系时非常有用,允许我们一致地处理...
**组合模式**(Composite Pattern)是一种常用的结构型设计模式,主要用于构建具有层次结构的对象系统。它允许客户端以一致的方式处理单个对象和组合对象,简化了高层模块的调用。通过组合模式,可以将多个对象组织成...
23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...
组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分-整体关系,使得我们能够以统一的方式处理单个对象和对象集合。在C++中,组合模式的应用可以帮助我们构建灵活且易于操作的对象层次结构,使得客户端...
组合模式(Composite Pattern)是一种结构型设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端可以以统一的方式对待单个对象和组合对象,这种模式常用于需要处理树形结构的数据...
3、Composite 组合模式 4、Decorator装饰者 5、Façade 外观、门面 6、Flyweight 享元模式 7、Proxy 代理模式 11个行为模式: 1、Chain of Responsibility 职责链 2、Command 命令 3、Interpreter 解释器 ...
组合模式(Composite Pattern)是一种对象结构型模式,其定义是将多个对象组合成树形结构以表示“整体-部分”关系的层次结构。它使得客户端对单个对象和组合对象的使用具有一致性。在组合模式中,对象被组织成树形...
在`Composite.zip`这个文件中,包含的示例应该展示了如何使用组合模式来实现这一概念。 在设计模式的世界里,组合模式是一种非常实用的工具,尤其在处理具有树形结构的数据时。它将个体对象(叶子对象)和组合对象...
组合模式(Composite Pattern)是一种树形结构的设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以对单个对象和组合对象进行一致性的操作处理,即客户程序可以像操作单个对象...
**复合模式(Composite Pattern)**是一种结构型设计模式,它允许我们构建复杂的对象结构,并能像操作单个对象一样处理整个结构。在计算机科学中,这种模式尤其适用于表示部分-整体层次结构,使得用户可以一致地处理...
4. **Composite 组合模式**:Composite允许你将对象组织成树形结构,可以对单个对象和对象组合进行相同的操作。在C#中,通常通过定义一个基类,然后让组合类和叶子类继承该基类来实现。 5. **Proxy 代理模式**:...
设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰...
在C++中,Composite模式使得客户可以对单个对象和对象组合进行一致的处理,这种模式常用于构建复杂的系统,其中组件可以有自己的子组件,形成一种树形结构。 ### 一、模式定义 Composite模式的核心思想是将对象...