设计模式之组合模式
来源:互联网 发布:淘宝企业店铺消失了 编辑:程序博客网 时间:2024/05/22 06:18
例题:餐厅菜单新需求导致的遍历困难
添加餐后甜点子菜单
结构抽象
需要用树形结构,节点是菜单或子菜单,叶子是菜单项
需要能够在各个菜单项之间游走,遍历
要能够有弹性的在菜单项之间游走
组合模式设计方案
类图
迭代器
public class ComposeIterator implements Iterator{ private Stack<Iterator> stack=new Stack<Iterator>(); public ComposeIterator(Iterator iterator) { stack.push(iterator); } @Override public boolean hasNext() { if(stack.empty()) { return false; } Iterator iterator=stack.peek(); if(!iterator.hasNext()) { stack.pop(); return hasNext(); } else { return true; } } @Override public Object next() { if(hasNext()) { Iterator iterator=stack.peek(); MenuComponent menuComponent=(MenuComponent)iterator.next(); stack.push(menuComponent.getIterator()); return menuComponent; } return null; }}SubMenu里面 public Iterator getIterator() { return new ComposeIterator(menuItems.iterator()); }
Code Adrress:
http://download.csdn.net/detail/kaikai_sk/9874436
阅读全文
0 0
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之--组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之---组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之-------------组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式 之 组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- android 中activity的启动模式是singleTask时清除activity的栈顶activity的生命周期小计
- New Year Message by Singaporean Prime Minister Lee Hsien Loong
- 从B树、B+树、B*树谈到R 树
- Swift之缓存文件处理
- 《机器学习》基本术语标准翻译总结:第2章
- 设计模式之组合模式
- 工具类(一)-----微信工具类
- 3D Touch
- asp.net的一些对话
- CMD常用命令
- android:descendantFocusability用法简析
- [$injector:unpr] Unknown provider:--angular.module()函数解答
- undefinded sysmbols __objc__类名编译错误
- 【Java多线程】死锁范例及解决办法