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)
下面是我自己写的一个例子,贴在这里。
定义一个文件生成器。文件的类: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
相关文章推荐
- ASP.Net设计时需要考虑的性能优化问题 转载自http://blog.sina.com.cn/s/blog_3d7bed650100055p.html
- http://blog.sina.com.cn/s/blog_b95b79f90101jhrv.html
- solrJ的使用--覆盖创建索引,查询,删除索引【转自http://blog.sina.com.cn/s/blog_64ac3ab10100t3mq.html】
- 理解strong与weak)强引用与弱引用转载自《http://blog.sina.com.cn/s/blog_7c8dc2d50101lc08.html》
- activity生命周期---starting an activity 特别好 强烈推荐(http://blog.sina.com.cn/s/blog_8191005601019pp5.html)
- 基本滤波算法比较 (转载http://blog.sina.com.cn/s/blog_69f2aa5a01014du5.html)
- SqlServer时间日期处理函数及字符串转换@http://blog.sina.com.cn/s/blog_634c33eb0101859v.html
- http://blog.sina.com.cn/s/blog_4452275001012vzl.html
- 数据库与MATLAB链接http://blog.sina.com.cn/s/blog_9d0b00a401012spy.html
- cookie与session(再比较) 转载 原文链接http://blog.sina.com.cn/s/blog_4745d1c10100ihnq.html
- http://blog.sina.com.cn/s/articlelist_1973273451_0_1.html
- C#中不需要用锁的线程安全的Singleton设计模式开发者在线 Builder.com.cn 更新时间:2008-07-19作者: 来源:
- http://blog.sina.com.cn/s/blog_7f5ad8c20101cnna.html#commonComment
- http://blog.sina.com.cn/s/blog_7ed3ed3d01018pbd.html
- http://blog.sina.com.cn/s/blog_406127500102v1p9.html
- KM算法 详解+模板 出自http://blog.sina.com.cn/s/blog_691ce2b701016reh.html
- Theano.scan() 来自http://blog.sina.com.cn/s/blog_6553da670102wi98.html
- 对于linux下system()函数的深度理解(整理) (2013-02-07 08:58:54)http://blog.sina.com.cn/s/blog_8043547601017qk0.htm
- C语言 随机数 (2012-08-20 19:15:38) http://blog.sina.com.cn/s/blog_8b745a5f01014ec7.html
- MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)