zoukankan      html  css  js  c++  java
  • 建造者模式案例

    private String food;//食物
        private String drink;//饮料
        public String getFood() {
            return food;
        }
        public void setFood(String food) {
            this.food = food;
        }
        public String getDrink() {
            return drink;
        }
        public void setDrink(String drink) {
            this.drink = drink;
        }
    餐厅类
    /**
     * @author megustas
     *抽象建造者类,确定套餐由两个产品buildFood()和buildDrink()组成,并声明一个得到产品建造后结果的方法getMeal()
     */
    public abstract class MealBuilder {
        Meal meal=new Meal();
        public abstract void buildFood();
        public abstract void buildDrink();
        public Meal getMeal() {
            return meal;
        }
        
        
    
    }
    建造者类
    //建造具体的套餐产品buildFood()和产品buildDrink()
    public class MealA extends MealBuilder{
    
        @Override
        public void buildFood() {
            getMeal().setFood("一盒薯条");
            
        }
    
        @Override
        public void buildDrink() {
            getMeal().setDrink("一杯可乐");        
        }
    
    }
    MealA
    public class MealB extends MealBuilder{
    
        @Override
        public void buildFood() {
            getMeal().setFood("三个鸡翅");
            
        }
    
        @Override
        public void buildDrink() {
            getMeal().setDrink("一杯柠檬果汁");
        }
    
    }
    MealB
    //指挥者类
    public class KFCWaiter {
        
        private MealBuilder mealBuilder;
        //用来指挥建造过程
        public Meal construct(){
            mealBuilder.buildFood();//准备食物
            mealBuilder.buildDrink();//准备饮料
            return mealBuilder.getMeal();//准备完毕,返回一个完整的套餐给客户。
        }
        
        public MealBuilder getMealBuilder() {
            return mealBuilder;
        }
    
        public void setMealBuilder(MealBuilder mealBuilder) {
            this.mealBuilder = mealBuilder;
        }
    
    }
    指挥者类
    /**
         * @param args
         * 客户端代码,客户不需知道具体的建造过程
         */
        public static void main(String[] args) {
            //服务员
            KFCWaiter waiter=new KFCWaiter();
            //套餐A
            MealA meala=new MealA();
            //服务员准备套餐A
            waiter.setMealBuilder(meala);
            //获取套餐
            Meal meal=waiter.construct();
            
            System.out.println("套餐A的组成部分:"+meal.getFood()+"---"+meal.getDrink());
                    
    
        }
    客户端

      具体案例说明及文档在文件中:

    MyBuilder建造者.rar 58KB 1/7/2017 6:49:24 PM
  • 相关阅读:
    vxlan简介1
    什么underlay网络?
    CDN:内容分发网络
    zz博通发布用于数据中心交换机的开源软件开发套件SDKLT
    DPDK盒子使用手册——DPDK入门zz
    2018年最值得关注的15大技术趋势zz
    为什么要使用叶脊(leaf-spine)拓扑网络zz
    openvswitch
    Linux基础训练题型(下)
    Linux基础命令训练题型(上)
  • 原文地址:https://www.cnblogs.com/WuXuanKun/p/6062992.html
Copyright © 2011-2022 走看看