package { public class Tree { private var name:String public function Tree(name:String) { this.name=name; } public function Add(node:Tree):void { } public function get Name():String { return this.name; } public function Remove(node:Tree):void { } //返回对象列表 public function children():Array { return null; } public function getChild(name:String):Tree { return null; } public function Display():void { } } }

今天仿了一个设计模式进行练习,这个和计算机数据结构的树很有关系,或者在我们使用的DisplayObjectContainer 容器类也有很大的关系,因为它的设计就是根据这个模式来设计来进行的。我们可以发现

DisplayObjectContainer 类当中也存在添加子叶 如下面

 
addChild(child:DisplayObject):DisplayObject
将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中

同样也有删除的操作 ,

 
removeChild(child:DisplayObject):DisplayObject
从 DisplayObjectContainer 实例的子列表中删除指定的 child DisplayObject 实例。

检索的操作,交换的操作。等等。

通过这个模式,我们可以发现原来adobe 设计师已经在设计这个类的时候 加入这个模式当中去。这样我们对这种开发的方法有所了解后,更加会明白了。这些与数据结构有很多关系,我们不知不觉已经使用这些东西,是不是很神奇呢?

package { public class Node extends Tree { private var list:Array=new Array(); public function Node(name:String) { super(name); } override public function Add(node:Tree):void { list.push(node); } override public function Remove(node:Tree):void { for(var i in list) { if(list[i]==node) { list.splice(i,1); } }//查询对应的键,就可以知道数组存取的值 } override public function children():Array { return list; } override public function getChild(Name:String):Tree { var mytree:Tree=null; for each(var tree:Tree in list) { if(tree.Name==Name) { mytree=tree; break; } } return mytree; } override public function Display():void { trace(this.Name); for each(var tree:Tree in list) { trace(tree.Name); } } } }

结合到这种结构,我们同样也可以实现一些很不错的效果。尝试一下

package { import flash.display.Sprite; import flash.events.*; public class Test extends Sprite { private var node:Node; public function Test() { node=new Node("一级分类"); node.Add(new Tree("金刚狼")); node.Add(new Tree("磁力保密")); node.Display(); var node2:Node=new Node("二级分类"); node2.Add(new Tree("英雄")); node2.Add(new Tree("越狱")); node2.Display(); var tree:Tree=node2.getChild("英雄"); trace(tree.Name); } } }

设计模式练习:Composite模式相关推荐

  1. 设计模式---组合Composite模式

    1.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 2.动机 在绘图编辑器和图形捕捉系统这样的图形应用程 ...

  2. 设计模式之Composite模式(笔记)

    组合模式:将对象组合成树形结构以表示"部分-总体"的层次结构. 组合模式使得用户对单个对象和组合对象的使用具有一致性. 适用场合:当需求中是体现部分与总体层次的结构时,以及希望用户 ...

  3. 设计模式之 Composite(组合)通俗理解

    23种设计模式 1 Composite 模式定义 将对象以树形结构组织起来,以达成"部分-整体" 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite ...

  4. 设计模式之组合模式(Composite)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  5. [设计模式] 8 组合模式 Composite

    DP书上给出的定义:将对象组合成树形结构以表示"部分-整体"的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字"树形".这种树形结构在现实 ...

  6. Java设计模式(8)组合模式(Composite模式)

    Composite定义:将对象以树形结构组织起来,以达成"部分-整体" 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Compo ...

  7. 设计模式学习笔记——组合(Composite)模式

    设计模式学习笔记--组合(Composite)模式 @(设计模式)[设计模式, 组合模式, composite] 设计模式学习笔记组合Composite模式 基本介绍 组合案例 类图 实现代码 Ent ...

  8. JAVA设计模式十七--Composite(组合模式)

    组合模式 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念   ,客户程序可以向处理简单元素一样来处理复杂元素,从而使 ...

  9. 设计模式之组合模式(Composite 模式)

    引入composite模式 在计算机文件系统中,有文件夹的概念,文件夹里面既可以放入文件也可以放入文件夹,但是文件中却不能放入任何东西.文件夹和文件构成了一种递归结构和容器结构. 虽然文件夹和文件是不 ...

  10. 设计模式之组合模式(Composite)

    1.引言 在学习JUnit的时候,看到一段话"JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象:当调用TestSuite对象的run()方 ...

最新文章

  1. ORM版学员管理系统
  2. 脑机前沿 | 利用BCI来进行大脑想象手写进行文本输出
  3. hadoop hive hbase 集群搭建
  4. Java的包裹wrap
  5. xsmax进入dfu模式_iPhone XS/XS Max如何强制重启?如何进入恢复模式或DFU模式?
  6. 北邮计算机学院崔哲域,邂逅北邮 是最美的期待—北京邮电大学2019级本科生开学典礼采访纪实...
  7. msg: ReferenceError: Can't find variable: urchinTracker
  8. gdb pwndbg插件安装
  9. Asp.Net Core 中间件应用实战中你不知道的那些事
  10. vivoiqooz1鸿蒙系统,iQOOZ1评测:vivo新一代性价比神机
  11. MATLAB基本用法介绍
  12. sqlserver数据库布尔盲注_7.sql注入基础1
  13. 高中电子技术——指针式万用表调零
  14. AWD-Yunnan-Simple_WriteUp
  15. ADSL(中国电信\电信)常见故障代码…
  16. VAX/VMS虚拟内存系统
  17. 我儿子今年15周岁,学习不好,去年上的高职,今年我犹豫是让他继续上,还是学个手艺?...
  18. atomic 原子操作
  19. 深度学习图片文字定位识别
  20. python 累加器_python中的累加器

热门文章

  1. angular 9.2升级10.2.2
  2. 算法知识点——(3)监督学习——决策树
  3. 转mysql_「转」MySQL不为人知的主键与唯一索引约束
  4. 如何设置照片的高度没有滚条_10分钟看懂Photoshop 照片修饰(照片修复工具)
  5. clob字段怎么导出_人人都会遇到的问题:Java 如何优雅的导出 Excel~
  6. html css 开发商业站点,Accp60_S1使用HTML语言和CSS开发商业站点(阅读).doc
  7. linux基础网络设置及使用DHCP动态配置主机地址
  8. 敏捷开发一千零一问:怎样处理重要但不明白的任务?
  9. 《探讨大规模无线通信》-高西奇教授 讲座记录
  10. Google 浏览器(2011)书签同步