您的位置:首页 > 其它

设计模式之组合模式

2017-06-19 14:43 176 查看

例题:餐厅菜单新需求导致的遍历困难

添加餐后甜点子菜单



结构抽象



需要用树形结构,节点是菜单或子菜单,叶子是菜单项

需要能够在各个菜单项之间游走,遍历

要能够有弹性的在菜单项之间游走

组合模式设计方案



类图



迭代器

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式