设计模式作业3

小王正在设计一个导出数据的应用框架。客户要求:导出数据可能存储成不同的文件格式,例如:文本格式、数据库备份形式、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;
	}
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值