组合模式
Posted camcay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合模式相关的知识,希望对你有一定的参考价值。
定义:将对象组合成树形结构来表示“整体/部分”的层次机构。让客户以一致性的方式处理个别对象和组合对象。
类图:
示例
package composite; import java.util.List; public class Menu { private String menuName; private List<Menu> childMenus; public Menu(String menuName,List<Menu> childMenus){ this.menuName = menuName; this.childMenus = childMenus; } public String getMenuName() { return menuName; } public List<Menu> getChildMenus() { return childMenus; } @Override public String toString() { return "["+menuName+"]"; } } package composite; import java.util.ArrayList; import java.util.List; public class Client { public static void main(String[] args){ //初始化模拟数据 List<Menu> firstSubList = new ArrayList<>(); List<Menu> secondSubList =new ArrayList<>(); firstSubList.add(new Menu("二级菜单-无子菜单",null)); firstSubList.add(new Menu("二级菜单-有子菜单",secondSubList)); secondSubList.add(new Menu("三级子菜单1",null)); secondSubList.add(new Menu("三级子菜单2",null)); Menu menu = new Menu("主菜单",firstSubList); //客户打印菜单树 printMenu(menu); } //递归打印菜单树 public static void printMenu(Menu menu){ System.out.println(menu); if(menu.getChildMenus()!=null&&menu.getChildMenus().size()>0){ for(Menu subMenu:menu.getChildMenus()){ printMenu(subMenu); } } } }
运行结果
牺牲单一职责原则换取数据结构的透明性
以上是关于组合模式的主要内容,如果未能解决你的问题,请参考以下文章