当前位置 博文首页 > 文章内容

    java设计模式(四)——建造者模式

    作者: 栏目:未分类 时间:2020-07-08 16:01:26

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    建造者模式适用于一步一步创建复杂对象的过程。

    复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的方式却相对稳定

    角色:

    抽象建造者(指挥者)

    具体建造者

    具体产品

    例如:去肯德基店去点餐,有不同的套餐产生不同的订单

    案例:

    类图:

     

     抽象建造者IorderBulider :

    public interface IorderBulider {
    
        void addHamburger(String name);
    
        void addCoke(String name);
    
        void addChicken(String name);
    
        void addFruitjuice(String name);
    
        Order buildOrder();
    
    }

    具体的建造者OrderBuilder :

    public class OrderBuilder implements IorderBulider {
    
        Order order = new Order();
    
        @Override
        public void addHamburger(String name) {
            order.setHamburger(name);
        }
    
        @Override
        public void addCoke(String name) {
            order.setCoke(name);
        }
    
        @Override
        public void addChicken(String name) {
            order.setChicken(name);
        }
    
        @Override
        public void addFruitjuice(String name) {
            order.setFruitjuice(name);
        }
    
        @Override
        public Order buildOrder(){
            return order;
        }
    }

    具体产品Order :

    @Data
    public class Order {
    
        private String hamburger;
        private String coke;
        private String chicken;
        private String fruitjuice;
    
    }

    测试:

    public class Test {
        public static void main(String[] args) {
            IorderBulider iorderBulider = new OrderBuilder();
            iorderBulider.addChicken("韩式炸鸡");
            iorderBulider.addCoke("百事可乐");
            iorderBulider.addHamburger("德式汉堡");
            Order order = iorderBulider.buildOrder();
            System.out.println(order);
        }
    }

     

    链式写法:

    public class OrderBuilder implements IorderBulider {
    
        Order order = new Order();
    
        @Override
        public IorderBulider addHamburger(String name) {
            order.setHamburger(name);
            return this;
        }
    
        @Override
        public IorderBulider addCoke(String name) {
            order.setCoke(name);
            return this;
        }
    
        @Override
        public IorderBulider addChicken(String name) {
            order.setChicken(name);
            return this;
        }
    
        @Override
        public IorderBulider addFruitjuice(String name) {
            order.setFruitjuice(name);
            return this;
        }
    
        @Override
        public Order buildOrder(){
            return order;
        }
    }

    测试:

    public class Test {
        public static void main(String[] args) {
            IorderBulider iorderBulider = new OrderBuilder();
            iorderBulider.addChicken("韩式炸鸡")
                         .addCoke("百事可乐")
                         .addHamburger("德式汉堡")
                         .addFruitjuice("汇源果汁");
            Order order = iorderBulider.buildOrder();
            System.out.println(order);
        }
    }