设计模式之建造者模式

/**
 *@author hyun
 *
 *类说明:产品类,抽象的
 */
public abstract class Person {

    protected String head;
    protected String body;
    protected String foot;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }
}

/**
 *@author hyun
 *
 *类说明:具体的产品
 */
public class Man extends Person {
    public Man() {
        System.out.println("create a man");
    }

    @Override
    public String toString() {
        return "Man{}";
    }
}

/**
 *@author hyun
 *
 *类说明:具体的产品
 */
public class Woman extends Person {

    public Woman() {
        System.out.println("create a Woman");
    }

    @Override
    public String toString() {
        return "Woman{}";
    }
}
/**
 *@author hyun
 *
 *类说明:抽象建造者
 */
public abstract class PersonBuilder {
	
	//建造部件
	public abstract void buildHead();
	public abstract void buildBody();
	public abstract void buildFoot();
	
	public abstract Person createPerson();

}

/**
 *@author hyun
 *
 *类说明:具体建造者
 */
public class ManBuilder extends PersonBuilder {
	
	private Person person;
	
	public ManBuilder() {
		this.person = new Man();
	}

	@Override
	public void buildHead() {
		person.setHead("Brave Head");
		
	}

	@Override
	public void buildBody() {
		person.setBody("Strong body");
		
	}

	@Override
	public void buildFoot() {
		person.setFoot("powful foot");
		
	}

	@Override
	public Person createPerson() {
		return person;
	}
	
	

}
/**
 *@author hyun
 *
 *类说明:具体建造者
 */
public class WomanBuilder extends PersonBuilder {
	
	private Person person;
	
	public WomanBuilder() {
		this.person = new Woman();
	}

	@Override
	public void buildHead() {
		person.setHead("Pretty Head");
		
	}

	@Override
	public void buildBody() {
		person.setBody("soft body");
		
	}

	@Override
	public void buildFoot() {
		person.setFoot("long white foot");
		
	}

	@Override
	public Person createPerson() {
		return person;
	}
	
	

}

/**
 *@author hyun
 *
 *类说明:导演者
 */
public class NvWa {
	
	public Person buildPerson(PersonBuilder pb) {
		pb.buildHead();
		pb.buildBody();
		pb.buildFoot();
		return pb.createPerson();
	}

}

/**
 *@author hyun
 *
 *类说明:客户端
 */
public class Mingyun {

    public static void main(String[] args) {
    	System.out.println("create NvWa");
    	NvWa nvwa =  new NvWa();
    	nvwa.buildPerson(new ManBuilder());
    	nvwa.buildPerson(new WomanBuilder());
    	
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值