迭代器与组合模式

迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。

组合模式允许你将对象组合成树形节后来表现“整体/部分”层次结构。
组合能让客户以一致的方式处理个别对象以及对象组合。

实例解析:
已知有早餐和晚餐两种菜单,早餐菜单采用ArrayList实现、晚餐菜单用数组实现。现在需要合并两种菜单
请使用迭代器模式来演示菜单的显示。
设计类图:


Paste_Image.png

主函数代码:

public class Test {
    public static void main(String[] args) {
        Menu breakfastMenu = new BreakfastMenu();
        Menu dinerMenu = new DinerMenu();
        Waitress waitress = new Waitress(breakfastMenu, dinerMenu);
        waitress.printMenu();
    }
}

具体代码

组合模式

现在又有一个咖啡厅的菜单,采用Hashtable实现。试整合菜单。

设计图

主函数代码:

public class Test {
    public static void main(String[] args) {
        MenuComponent pancakeHouseMenu = new Menu("pancakeHouseMenu", "Breakfast");
        MenuComponent dinnerMenu = new Menu("dinnerMenu", "lunch");
        MenuComponent cafeMenu = new Menu("cafeMenu", "cafe");
        MenuComponent dessert = new Menu("dessertMenu", "dessert");
        MenuComponent allMenus = new Menu("all menus", "all menus combined");
        allMenus.add(pancakeHouseMenu);
        allMenus.add(dinnerMenu);
        allMenus.add(cafeMenu);
        dinnerMenu.add(new MenuItem(
              "dinner1", "dinner1 description", true, 1.111
        ));
        dinnerMenu.add(dessert);
        dessert.add(new MenuItem(
                "dessert2", "dessert2 description", true, 2.22
        ));
        Waitress waitress = new Waitress(allMenus);
        waitress.printMenu();
    }
}

具体代码

设计原则

  • 一个类应该只有一个引起变化的原因。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • quiterr阅读 656评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,038评论 18 399
  • 现在聊艺术很流行,太太们周末都要去转转艺术展,新贵们也开始收藏艺术品,各种鉴赏沙龙也举行的火热。除了钱,我们终于开...
    辰哥阅读 4,525评论 0 1
  • 机缘下,相逢简书,鉴于这个名称的简洁,终于在朋友安利下在用它。也许准确一点,那不叫用,而只是当个消遣时间的app。...
    景桑阅读 3,764评论 5 7