您的位置:首页 > 理论基础 > 计算机网络

Builder设计模式 http://blog.sina.com.cn/s/blog_3f982c46010004fn.html

2013-05-24 00:20 302 查看

Java设计模式之Builder模式:例子(FileBuilder)

(2006-07-13 10:33:41)

关于Builder模式,网上盛传的例子就是那个buildPartA,buildPartB的程序,很少有其他的例子,看来真是天下文章一大抄!

下面是我自己写的一个例子,贴在这里。

定义一个文件生成器。文件的类:MyFile 分为三个部分,也就是说有三个属性:FileHead,FileContent,FileEnd。

FileHead定义如下:
package create.builder1;

public class FileHead {

private String value;
public String getValue() {

return value;

}
public void setValue(String value) {

this.value = value;

}

}
FileContent定义如下:
package create.builder1;

public class FileContent {

private String value;
public String getValue() {

return value;

}
public void setValue(String value) {

this.value = value;

}

}
FileEnd 定义如下:
package create.builder1;

public class FileEnd {

private String value;
public String getValue() {

return value;

}
public void setValue(String value) {

this.value = value;

}

}
现在定义MyFile:

package create.builder1;
import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;
public class MyFile {

private FileHead fhead;
private FileContent fcontent;
private FileEnd fend;

public FileContent getFcontent() {

return fcontent;

}
public void setFcontent(FileContent fcontent) {

this.fcontent = fcontent;

}
public FileEnd getFend() {

return fend;

}
public void setFend(FileEnd fend) {

this.fend = fend;

}
public FileHead getFhead() {

return fhead;

}
public void setFhead(FileHead fhead) {

this.fhead = fhead;

}

public void write(String path) throws IOException{

File f=new File(path);

FileWriter fw=new FileWriter(f);

PrintWriter out=new PrintWriter(fw);

out.println(fhead.getValue());

out.println(fcontent.getValue());

out.println(fend.getValue());

out.close();

}

}
定义Builder,我给她取名字为FileBuilder:

package create.builder1;
public interface FileBuilder {

void buildHead();

void buildContent();

void buildEnd();

MyFile getResult();

}

该定义Director了,名字为:FileDirector:

package create.builder1;
public class FileDirector {

private FileBuilder filebuilder;

public FileDirector(FileBuilder filebuilder){

this.filebuilder=filebuilder;

}

public void construct(){

filebuilder.buildHead();

filebuilder.buildContent();

filebuilder.buildEnd();

}

}
现在到了定义具体Builder的时候了,定义两个,一个是生成txt文件的,一个生成xml文件

TxtBuilder:

package create.builder1;
public class TxtBuilder implements FileBuilder{

private FileHead fh=new FileHead();

private FileContent fc=new FileContent();;

private FileEnd fe=new FileEnd();
public void buildHead() {

// TODO Auto-generated method stub

fh.setValue("This is text
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐