小王正在设计一个导出数据的应用框架。客户要求:导出数据可能存储成不同的文件格式,例如:文本格式、数据库备份形式、Excel格式、Xml格式等等,并且,不管什么格式,导出数据文件都分成三个部分,分别是文件头、文件体和文件尾,在文件头部分,需要描述如下信息:分公司或门市点编号、导出数据的日期,对于文本格式,中间用逗号分隔,在文件体部分,需要描述如下信息:表名称、然后分条描述数据,对于文本格式,表名称单独占一行,数据描述一行算一条数据,字段间用逗号分隔,在文件尾部分,需要描述如下信息:输出人。请你选择恰当的设计模式帮助小王进行设计。
代码设计:
public abstract class File_struct {
protected String form_name;
protected String[] form_data;
protected abstract void get_head(String num);
protected abstract void get_body();
protected abstract void get_tail(String name);
}
public interface Builder {//通过不同的建造者输出不同的文件,例子中是文本文件输出
void builder(String num,String name);
}
public class Text_Builder extends File_struct implements Builder {
private Text_Builder(File_struct file){
this.form_name=file.form_name;
this.form_data=file.form_data;
}
@Override
public void builder(String num,String name) {
// TODO Auto-generated method stub
get_head(num);
get_body();
get_tail(name);
}
@Override
protected void get_head(String num) {//这里应该为输出到文本文件,这里及后边用输出到控制台表示
// TODO Auto-generated method stub
System.out.println(num);
SimpleDateFormat sdate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//获取当前时间并输出
Date date=new Date();
String ssdate=sdate.format(date);
System.out.println(ssdate);
}
@Override
protected void get_body() {
// TODO Auto-generated method stub
System.out.println(this.form_name);
for(int i=0;this.form_data[i]!=null;i++) {
System.out.println(this.form_data[i]);
}
}
@Override
protected void get_tail(String name) {
// TODO Auto-generated method stub
System.out.println(name);
}
}
单例模式的本质是什么?基于单例模式,请考虑如何控制某个类的实例数目最多只能有3个,给出代码实现。
答:为一个面向对象的应用程序提供了对象惟一的静态访问点,使整个应用程序都会同享一个实例对象。(ps:详见百度百科)
代码设计:
public class Simple {
private static Simple []simple = new Simple[3];//静态私有成员变量
private Simple(){
}
public static Simple[] simpleBuild() {
simple[0]=new Simple();
simple[1]=new Simple();
simple[2]=new Simple();
return simple;
}
}