build模式

java的这些设计模式都离不开接口与抽象类,果然java里接口和抽象类的掌握是关键啊
这builder模式又得靠接口/抽象类来构建
Briger模式是把对象的属性和行为分隔开来,以至能使2部分都能独立的变化,这个builder模式是为了分离复杂对象里的组件的构建和复杂对象本身的构建过程的模式,这样复杂对象的子组件的构建和复杂对象本身的构建都可以独立的发生变化
其关键是子对象的构建方法被builder委派给了一个接口及其这个接口的实现类,这样子类的构建方法就有了动态性
然后在一个外在的管理类中去调用这个接口对象,手动的去调用子组件的初始化循序,以控制复杂对象本身的构造循序
uml类图
[img]http://images.cnblogs.com/cnblogs_com/zhenyulu/Pic53.gif[/img]

列子

我要构建一个飞船对象 包括一个发动机和雷达 飞船和这2个组件是聚合关系



public class SpaceShip {
private Engine engine;//发动机

private Raid radar;//雷达


public void setEngine(Engine engine) {
this.engine = engine;
}



public void setRaid(Raid raid) {
this.raid = raid;
}
}



构造实现雷达和发动机方法的接口还有一个得到整船的方法

public interface Builder {

void buildEngine();

void buildRaid();

SpaceShip getShip();

}


实现builder的子类

public class BuilderImpl implements Builder {

private SpaceShip ship;

public void buildEngine() {
ship.setEngine(new Engine());

}

public void buildRaid() {
ship.setRadar(new Raid());

}

public SpaceShip getShip() {
// TODO Auto-generated method stub
return this.ship;
}
}

一个负责子部件构造循序的管理类

public class Director {
public Director(Builder builder){
builder.buildEngine();
builder.buildRaid();
}
}



外部调用


Builder builder = new BuilderImpl();//组件构建实现者
Director d = new Director(builder);//组装执行者

SpaceShip ship = builder.getShip();//获得整船


这样我们在构造ship对象的时候不可以不管子组件是如何构建的拉,而且我们可以根据需要对子组件的构造方法动态的进行修改 只要让builder接口指向不同的实现对象就行了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值