您的位置:首页 > 编程语言 > Java开发

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

2016-03-23 16:19 471 查看

建造者模式

建造者模式就是一步一步的创建一个复杂的对象,而且允许用户指定复杂对象的类型和内容。建造者的模式结构一般如下图所示。

Builder 类是一个抽象类,用于定义一些创建子部件的方法,Builder类中应该还有一个 getResult() 方法,用于将创建好的部件组装成一个产品返回。

Director 类又称为指挥者,用于安排复杂对象的建造次序,通过construct() 方法,指导Builder类完成组装。

通过一个例子来更好的理解建造者模式,比如说现在的手机都支持更换主题,所有的主题建造过程都是类似的,比如说更换图标,背景,提示音,那么这个时候就可以通过建造者模式来完成这一过程。

先来设计一下Product和Builder类

public class Product {

private String mBackground;
private String mIcon;
private String mSounds;

public String getBackground() {
return mBackground;
}
public void setBackground(String background) {
mBackground = background;
}
public String getIcon() {
return mIcon;
}
public void setIcon(String icon) {
mIcon = icon;
}
public String getSounds() {
return mSounds;
}
public void setSounds(String sounds) {
mSounds = sounds;
}

}

public abstract class Builder {

private Product mProduct = new Product();

public Product getResult(){
return mProduct;
}

public abstract void buildBackground();
public abstract void buildIcon();
public abstract void buildSounds();
}


可见,不论什么样的主题,以上代码都是通用的,对于不同的主题,只需要在ConcreteBuilder中进行设置就可以了。

public class ConcreteBuilder extends Builder{

public void buildBackground(){
mProduct.setBackground("Black");
}
public void buildIcon(){
mProduct.setIcon("MyIcon");
}
public void buildSounds(){
mProduct.setSounds("MySounds");
}
}


既然产品生产过程已经构建出来了,那么就到了Director 类发挥作用的时候了,现在就由Director 来指挥各个部件的创造,并且将组装好的产品返回给客户端。

public class Director {

public Product construct(Builder builder){
builder.buildBackground();
builder.buildIcon();
builder.buildSounds();
return builder.getResult();
}

}


可见Director 类中只有一个简单的方法,有的时候当产品的部件不是很多的时候,完全可以将该方法放到Builder类中,从而省略Director 类。

已经看出,建造者模式和抽象工厂模式很类似。其实,抽象工厂模式更侧重于生产 “部件” , 而建造者模式侧重于将各个 部件组装成一个产品。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java设计模式