您的位置:首页 > 编程语言 > Java开发

java设计模式之建造者模式

2018-03-19 11:34 423 查看
什么时候需要用到建造者模式?

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

使用建造者模式好处就是使得建造代码与表示代码分离,由于建造者隐藏该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要在创建一个具体的创建者就可以了。
建造者模式主要有几部分组成:
例如: 建造人 

1.抽象建造类 Builder
2.具体建造者 ThinPersonBuilder(继承Builder,构造装配各个部件)
3.指挥者 (根据需求  具体的指挥创建)
4.Product (最终创建出来的产品)
代码如下:
1:抽象建造类 Builder
/**
* @author: wjq
* @date: 2018/3/19
* @description:  抽象建造类 Builder
*/
public abstract  class PersonBuilder {
public abstract void buildHead();
public abstract void buildHBody();
public abstract void buildArmLeft();
public abstract void buildArmRight();
public abstract void buildLegLeft();
public abstract void buildLegRight();
public abstract void builder();

}
2.具体建造者 ThinPersonBuilder(继承Builder,构造装配各个部件)
/**
* @author: wjq
* @date: 2018/3/19
* @description: 具体的一个建造者 ThinPersonBuilder (继承Builder,构造装配各个部件)
*/
public class PersonThinBuilder extends  PersonBuilder{

@Override
public void buildHead() {
System.out.println("建造 头");
}

@Override
public void buildHBody() {
System.out.println("建造 身体");

}

@Override
public void buildArmLeft() {
System.out.println("建造 左胳膊");

}

@Override
public void buildArmRight() {
System.out.println("建造 右胳膊");

}

@Override
public void buildLegLeft() {
System.out.println("建造 左腿");

}

@Override
public void buildLegRight() {
System.out.println("建造 右腿");
}

@Override
public void builder() {
this.buildArmLeft();
this.buildArmRight();
this.buildHBody();
this.buildHead();
this.buildLegLeft();
this.buildLegRight();
}

}
3.指挥者 (根据需求  具体的指挥创建)
/**
* @author: wjq
* @date: 2018/3/19
* @description: 指挥者 (根据需求  具体的指挥创建)
*/
public class Director {

private PersonBuilder personBuilder;

public void construct(PersonBuilder personBuilder){
personBuilder.builder();
// this.personBuilder = personBuilder;
}

public PersonBuilder getResult(){
return personBuilder;
}

}
4.Product (最终创建出来的产品)
/**
* @author: wjq
* @date: 2018/3/19
* @description:  Product (最终创建出来的产品)
*/
public class Product {

public static void main(String[] args) {

Director director = new Director();
PersonThinBuilder  PersonThinBuilder = new PersonThinBuilder();
director.construct(PersonThinBuilder);
// director.getResult();

}
}
具体根据业务需求写 !!! 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息