设计模式--创建者--建造者

定义
  将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。
实用范围
  1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  2 当构造过程必须允许被构造的对象有不同表示时。
角色
  在这样的设计模式中,有以下几个角色:
  1 builder:为创建一个产品对象的各个部件指定抽象接口。
  2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口,把各个部件逐渐安装到产品上的过程
  3 Director:构造一个使用Builder接口的对象。安装部件
  4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
例子
  1.要制造的复杂对象
package com.builderpatter;

public class Phone {
private String shoujike;
private String pingmu;

public String getShoujike() {
return shoujike;
}

public void setShoujike(String shoujike) {
this.shoujike = shoujike;
}

public String getPingmu() {
return pingmu;
}

public void setPingmu(String pingmu) {
this.pingmu = pingmu;
}
}


2.为创建一个产品对象的各个部件指定抽象接口
package com.builderpatter;

public interface PhoneBuilder {
void buildShoujike();
void buildPingmu();
public Phone buildPhone();
}


3.创建各个组件的过程
public class PhoneBuilderInstance implements PhoneBuilder {
private Phone phone;
public PhoneBuilderInstance() {
phone = new Phone();
}
public void buildPingmu() {
// TODO Auto-generated method stub
phone.setShoujike("安装上手机壳");
}

public void buildShoujike() {
// TODO Auto-generated method stub
phone.setPingmu("安装上屏幕");
}
public Phone buildPhone() {
// TODO Auto-generated method stub
return phone;
}

}


4.完成拼装

package com.builderpatter;

public class PhoneDirector {

Phone phoneConstructor(PhoneBuilder pb) {
pb.buildPingmu();
pb.buildShoujike();
return pb.buildPhone();

}

}


5测试
public class Test {
public static void main(String[] args) {
PhoneBuilder pb = new PhoneBuilderInstance();
PhoneDirector pd = new PhoneDirector();
Phone p =pd.phoneConstructor(pb);
System.out.println(p.getPingmu());
System.out.println(p.getShoujike());
}
}


6测试结果

安装上屏幕
安装上手机壳
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值