您的位置:首页 > 产品设计 > UI/UE

设计模式(三):建造者模式Builder(创建型模式)

2016-07-14 17:17 639 查看
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

一.适用性

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

2.当构造过程必须允许被构造的对象有不同的表示时。

二.参与者

1.Builder

为创建一个Product对象的各个部件指定抽象接口。

2.ConcreteBuilder

实现Builder的接口以构造和装配该产品的各个部件。

定义并明确它所创建的表示。

提供一个检索产品的接口。

3.Director

构造一个使用Builder接口的对象。

4.Product

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

三.实例

package com.zoey.designPattern.Builder;

public class pupil {
private String redScarf;
private String schoolUniform;
private String schoolBag;
public String getRedScarf() {
return redScarf;
}
public void setRedScarf(String redScarf) {
this.redScarf = redScarf;
}
public String getSchoolUniform() {
return schoolUniform;
}
public void setSchoolUniform(String schoolUniform) {
this.schoolUniform = schoolUniform;
}
public String getSchoolBag() {
return schoolBag;
}
public void setSchoolBag(String schoolBag) {
this.schoolBag = schoolBag;
}
}


package com.zoey.designPattern.Builder;

public class FemalePupil extends pupil {

}


package com.zoey.designPattern.Builder;

public interface pupilBuilder {
void buildRedScarf();
void buildSchoolUniform();
void buildSchoolBag();

pupil buildPupil();
}


package com.zoey.designPattern.Builder;

public class FemaleBuilder implements pupilBuilder {

pupil p ;

public FemaleBuilder(){
p = new FemalePupil();
}

@Override
public void buildRedScarf() {
p.setRedScarf("制作一条红领巾");
}

@Override
public void buildSchoolUniform() {
p.setSchoolUniform("买一套校服");
}

@Override
public void buildSchoolBag() {
p.setSchoolBag("买一个小书包");
}

@Override
public pupil buildPupil() {
return p;
}

}


package com.zoey.designPattern.Builder;

public class pupilDirector {

public pupil constructPupil(pupilBuilder pb){
pb.buildRedScarf();
pb.buildSchoolUniform();
pb.buildSchoolBag();
return pb.buildPupil();
}
}


package com.zoey.designPattern.Builder;

public class test {

public static void main(String[] args) {
pupilDirector pd = new pupilDirector();
pupil p = pd.constructPupil(new FemaleBuilder());
System.out.println(p.getRedScarf());
System.out.println(p.getSchoolUniform());
System.out.println(p.getSchoolBag());
}

}


结果:

制作一条红领巾
买一套校服
买一个小书包


比喻:摘自网络

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: