大话设计模式——09建造者模式

一、直接画

public class RunMain {

public static void main(String[] args) {
	
	System.out.println("一个瘦子");
	System.out.println("头");
	System.out.println("躯干");
	System.out.println("左脚");
	System.out.println("右手");
	System.out.println("左脚");
	System.out.println("右脚");
	
	System.out.println("一个胖子");
	System.out.println("头");
	System.out.println("躯干");
	System.out.println("左脚");
	System.out.println("右手");
	System.out.println("左脚");
	// System.out.println("右脚");

}

}
二、通过类画

public class PersonThinBuilder {

public void build() {
	System.out.println("一个瘦子");
	System.out.println("头");
	System.out.println("躯干");
	System.out.println("左脚");
	System.out.println("右手");
	System.out.println("左脚");
	System.out.println("右脚");
}

}

public class PersonFatBuilder {

public void build() {
	System.out.println("一个胖子");
	System.out.println("头");
	System.out.println("躯干");
	System.out.println("左脚");
	System.out.println("右手");
	System.out.println("左脚");
	System.out.println("右脚");
}

}
public class RunMain {

public static void main(String[] args) {
	
	// 通过类画,但如果需求需要加一个高个子的人,不注意又缺胳膊少腿呢?最好的办法是规定,凡是建造小人,都必须有头有身有胳膊有腿。
	PersonThinBuilder tb = new PersonThinBuilder();
	tb.build();
	
	PersonFatBuilder fb = new PersonFatBuilder();
	fb.build();
	
}

}
三、建造者模式

// Builder是为创建一个Product对象的各个部件指定的抽象接口
public abstract class PersonBuilder {

public abstract void describe();
public abstract void buildHead();
public abstract void buildBody();
public abstract void buildArmLeft();
public abstract void buildArmRight();
public abstract void buildLegLeft();
public abstract void buildLegRight();

}
// 具体建造者,实现Builder接口,构建和装配各个部件。
public class PersonHighBuilder extends PersonBuilder {

@Override
public void describe() {
	System.out.println("一个高个子的人");
}

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

@Override
public void buildBody() {
	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("右脚");
}

}
// 指挥者,是构建一个使用Builder接口的对象。用来控制建造过程,也用它隔离用户与建造过程的关联。
public class PersonDirector {

private PersonBuilder pb;

public PersonDirector(PersonBuilder pb) { // 用户告诉指挥者,我需要什么样的小人
	this.pb = pb;
}

public void createPerson() {
	pb.describe();
	pb.buildHead();
	pb.buildBody();
	pb.buildArmLeft();
	pb.buildArmRight();
	pb.buildLegLeft();
	pb.buildLegRight();
}

}
public class RunMain {

public static void main(String[] args) {
	
	// 建造的过程是稳定的,但建造的细节是不同的。如果你需要将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示时,我们就需要应用建造者模式。
	// 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
	// 用户只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。
	PersonHighBuilder hb = new PersonHighBuilder();
	PersonDirector pdHigh = new PersonDirector(hb);
	pdHigh.createPerson();
	
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值