码迷,mamicode.com
首页 > 其他好文 > 详细

建造者(Builder)设计模式

时间:2019-08-17 00:49:34      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:ons   public   set   body   原因   工厂   的区别   数据   oid   

建造者(Builder)设计模式

1.0.0 产生建造者模式的原因

????在类的数据特别复杂的时候,创建一个类需要花费很长的时间,因为有些类需要根据不同的场合进行不同的初始化。在类结构比较复杂,而且初始化比较困难的情况下,封装好的类创建步骤可以减少工作量,提高稳定性。这就是为什么需要建造者模式的原因。

2.0.0 什么是建造者模式?

将复杂对象的构建和对象的表示分离,使得同样的构建过程可以创建不同的表示。

3.0.0 建造模式的使用场景

  • 复杂对象的创建(参数较多,而且比较初始化困难)--->创建的封装

4.0.0 建造者模式的对象

  • 产品对象
  • 抽象建造器
  • 具体建造器
  • 指挥者

5.0.0 建造者模式的一般实现

@Slf4j
public class BuilderPattern {
    class CarDirector {
        private IBuilder builder;
        public CarDirector(IBuilder builder) {this.builder = builder;}
        public Car construct() {
            builder.buildWheel();
            builder.buildBody();
            builder.buildEngine();
            return builder.build();
        }
    }

    interface IBuilder {
        void buildWheel();
        void buildBody();
        void buildEngine();
        Car build();
    }

    class CarBuilder implements IBuilder {
        private Car car = new Car();
        @Override
        public void buildWheel() {car.setWheel("wheel");}
        @Override
        public void buildBody() {car.setWheel("body");}
        @Override
        public void buildEngine() {car.setWheel("engine");}
        @Override
        public Car build() {return car;}
    }

    @Setter
    class Car {
        private String wheel;
        private String body;
        private String engine;
    }
}

6.0.0 建造者模式和工厂模式的联系和区别

  • 工厂模式--> 工厂的分配以及产品线的创建/产品的创建
  • 建造者模式-->产品的组装过程,先装螺丝,后装电线....

  • 工厂模式:董事长要做一批产品,根据产品的的不同分配不同的分工厂生产产品。
  • 建造者模式:流水线组装产品,线长需要根据不同的需求,安排不同的人组装一个产品。
  • 高度不同!!! 董事长和线长的区别

建造者(Builder)设计模式

标签:ons   public   set   body   原因   工厂   的区别   数据   oid   

原文地址:https://www.cnblogs.com/fengzhida/p/11366739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!