创建型模式——建造者模式

建造者模式(builder)(这个比较简单)

定义:

使一个复杂对象的构造与它的表示分离,使同样的构造方式可以构造不同的表示!

适用性:

1.当构造过程必须允许构造对象有不同的表示时;

2.当创建复杂对象的算法应该独立于对象的组成部分以及它们的装配方式时。

角色:

1.builder:  一个接口,为创建一个产品对象的指定部件!

2.concreteBuilder:实现builder接口,完成对象的指定部件的具体创建,以及装配,定义并明确他所创建的表示,并提供一个检索产品的接口!

3.product:复杂对象,concreteBuilder中完成它的所有部件的具体创建以及对该对象的各部件的装配!

4.Director:使用者,在这里使用builder创建对象!

builder:

package pattern.creational.builder.builder;

import pattern.creational.builder.bean.Person;

public interface PersonBuilder {

	public void createBody(String str);

	public void createHead(String str);

	public void createFoot(String str);

	public Person createPerson();

}

package pattern.creational.builder.builder.impl;

import pattern.creational.builder.bean.Man;
import pattern.creational.builder.bean.Person;
import pattern.creational.builder.builder.PersonBuilder;

public class ManBuilder implements PersonBuilder {
	private Person person;
	public ManBuilder(){
		person = new Man();
	}
	/* (non-Javadoc)
	 * @see pattern.builder.builder.PersonBuilder#createBody(java.lang.String)
	 */
	public void createBody(String str){
		person.setBody(str);
	}
	/* (non-Javadoc)
	 * @see pattern.builder.builder.PersonBuilder#createHead(java.lang.String)
	 */
	public void createHead(String str){
		person.setHead(str);
	}
	/* (non-Javadoc)
	 * @see pattern.builder.builder.PersonBuilder#createFoot(java.lang.String)
	 */
	public void createFoot(String str){
		person.setFoot(str);
		
	}
	/* (non-Javadoc)
	 * @see pattern.builder.builder.PersonBuilder#createPerson()
	 */
	public Person createPerson(){
		return person;
	}

}

product:

package pattern.creational.builder.bean;

public class Person {
	protected String head;
	protected String body;
	protected String foot;
	public void setHead(String head) {
		this.head = head;
	}
	public String getHead() {
		return head;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public String getBody() {
		return body;
	}
	public void setFoot(String foot) {
		this.foot = foot;
	}
	public String getFoot() {
		return foot;
	}
	

}
package pattern.creational.builder.bean;

public class Man extends Person {
}

Director:

package pattern.creational.builder.director;

import pattern.creational.builder.bean.Person;
import pattern.creational.builder.builder.PersonBuilder;

/**
 * 使用者
 * @author silence
 *
 */
public class Director {
	public Person createPerson(PersonBuilder pb){
		pb.createBody("建造男人的身体");
		pb.createFoot("建造男人的脚");
		pb.createHead("建造男人的头");
		return pb.createPerson();
		
	}
}
test:

package pattern.creational.builder.test;

import pattern.creational.builder.bean.Man;
import pattern.creational.builder.builder.PersonBuilder;
import pattern.creational.builder.builder.impl.ManBuilder;
import pattern.creational.builder.director.Director;

public class Main {
	public static void main(String[] args){
		PersonBuilder pb = new ManBuilder();
		Director director = new Director();
		Man man = (Man) director.createPerson(pb);
		System.out.println(man.getBody()+","+man.getFoot()+","+man.getHead());
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值