该模式的主要思想是将对象的构造过程分解成多个步骤,每个步骤都可以独立运行,并且在每个步骤完成后都可以返回一个中间状态,然后使用一个导演类来协调这些步骤,最终创建出完整的对象.
建造者模式通常包括一下角色:
产品类(product):被构造出来的复杂对象,它具有多个属性或部件.
抽象构造者类(builder):定义了构建复杂对象所需的方法和属性.
具体建造者类(concretebuilder):实现抽象建造者类中定义的方法和属性,并返回最终构造的对象
导演类(director):负责协调各个具体建造者类的构建过程,以及返回最终构造的对象,
实现首先创建一个产品类
package com.fanqiechaodan.build;import lombok.data;/** * @classname car * @description 产品类 */@datapublic class car { private string brand; private string model; private string color; private int maxspeed;}
其次创建抽象建造者类
package com.fanqiechaodan.build;/** * @classname carbuilder * @description 抽象建造者类 */public abstract class carbuilder { protected car car; public carbuilder(){ car = new car(); } public abstract void buildbrand(); public abstract void buildmodel(); public abstract void buildcolor(); public abstract void buildmaxspeed(); public car getcar() { return car; }}
然后创建具体构造者类
package com.fanqiechaodan.build;/** * @classname bmwbuilder * @description 具体构造者类 */public class bmwbuilder extends carbuilder { @override public void buildbrand() { car.setbrand("bmw"); } @override public void buildmodel() { car.setmodel("x6"); } @override public void buildcolor() { car.setcolor("black"); } @override public void buildmaxspeed() { car.setmaxspeed(218); }}
创建导演类
package com.fanqiechaodan.build;/** * @classname director * @description 导演类 */public class director { private carbuilder carbuilder; public director(carbuilder carbuilder) { this.carbuilder = carbuilder; } public car constructcar() { carbuilder.buildbrand(); carbuilder.buildcolor(); carbuilder.buildmaxspeed(); carbuilder.buildmodel(); return carbuilder.getcar(); }}
测试
package com.fanqiechaodan.build;/** * @classname demo * @description 建造者模式 */public class demo { public static void main(string[] args) { carbuilder carbuilder = new bmwbuilder(); director director = new director(carbuilder); car car = director.constructcar(); system.out.println(car.tostring()); }}
以上就是怎么使用java建造者模式构建复杂对象的详细内容。