迭代器与组合模式

作者: Kwee | 来源:发表于2016-08-17 16:31 被阅读202次
    迭代器模式
    迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。
    
    组合模式允许你将对象组合成树形节后来表现“整体/部分”层次结构。
    组合能让客户以一致的方式处理个别对象以及对象组合。
    

    实例解析:
    已知有早餐和晚餐两种菜单,早餐菜单采用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();
        }
    }
    

    具体代码

    设计原则

    • 一个类应该只有一个引起变化的原因。

    相关文章

      网友评论

        本文标题:迭代器与组合模式

        本文链接:https://www.haomeiwen.com/subject/kpsmsttx.html