建造者模式,煎饼果子

来源:互联网 发布:coc连弩数据 编辑:程序博客网 时间:2024/04/28 19:55

大家有没有吃过煎饼果子?味道超赞还可以根据自己的喜好让老板加鸡蛋、加生菜、加里脊、加火腿、加辣椒等。


模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

案例分析:老板就是煎饼果子的建造者,只要告诉老板我加鸡蛋加生菜就行,老板负责生产并把产品交给你。

优点:隐藏产品细节,复杂对象可配置,建造者可以独立拓展。

注意:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。

代码:首先定义煎饼果子

public class Pancake {    public Double price;   //价格    public String name;    //名称    private Pancake() {        price = 3.00;        name = "煎饼果子";    }    //建造者(老板)    public static class Builder {        private Pancake pancake = new Pancake();        public Builder addCaraway() {            pancake.price += 0.5;            pancake.name += "\n加香菜";            return this;        }        public Builder addShallot() {            pancake.price += 0.5;            pancake.name += "\n加葱末";            return this;        }        public Builder addHam() {            pancake.price += 1.5;            pancake.name += "\n加火腿";            return this;        }        public Builder addEgg() {            pancake.price += 2;            pancake.name += "\n加鸡蛋";            return this;        }        public Builder addLettuce() {            pancake.price += 0.5;            pancake.name += "\n加生菜";            return this;        }        public Builder addChine() {            pancake.price += 2;            pancake.name += "\n加里脊肉";            return this;        }        public Builder addPepper() {            pancake.price += 0.5;            pancake.name += "\n加辣椒";            return this;        }        public Builder addCracknel() {            pancake.price += 1.0;            pancake.name += "\n加脆饼";            return this;        }        public Pancake builder() {            return pancake;        }    }}
测试
public class Test {    public static void main(String args[]) {        Pancake pancake = new Pancake.Builder()                .addCaraway()                .addChine()                .addHam()                .addEgg()                .addPepper()                .builder();        System.out.println(pancake.name);        System.out.print("总价:" + pancake.price + "元");    }}
结果
煎饼果子加香菜加里脊肉加火腿加鸡蛋加辣椒总价:9.5元