设计模式——小王正在设计一个导出数据的应用框架

    小王又来了。

    小王正在设计一个导出数据的应用框架。
    客户要求:导出数据可能存储成不同的文件格式,例如:文本格式、数据库备份形式、Excel格式、Xml格式等等
    并且,不管什么格式,导出数据文件都分成三个部分,分别是文件头、文件体和文件尾


    在文件头部分,需要描述如下信息:分公司或门市点编号、导出数据的日期,对于文本格式,中间用逗号分隔


    在文件体部分,需要描述如下信息:表名称、然后分条描述数据,对于文本格式,表名称单独占一行,数据描述一行算一条数         据,字段间用逗号分隔


    在文件尾部分,需要描述如下信息:输出人


    请你选择恰当的设计模式帮助小王进行设计。

 


经过初步分析,针对不同文件格式要进行细节调整,应该使用适配器模式。初步构造模式如下:

最终代码如下:

package Mr_Wang;

public class Client {
	public static void main(String[] args) {
		//System.out.println("hello word");
		// 首先创建出一个输出文件的机器人->robot
		Robot robot=new Adapter();
		robot.head();
		robot.body();
		robot.tail();
	}
}
package Mr_Wang;
//文件输出机器人,作为一个接口
public interface Robot {
	public void head() ;
	public void body() ;
	public void tail() ;
}
package Mr_Wang;

public class File {
	protected String file_type="text";
	public String get_type(){
		return file_type;
	}
	public int set_type(String settype) {
		file_type = settype;
		return 0;
	}
	///文件头开始:
	public void number() {
		System.out.print("分公司或门市点编号");
	}
	public void date() {
		System.out.print("导出数据的日期");
	}
	/*public void file_head() {
		System.out.println("分公司或门市点编号、导出数据的日期");
		//这样写在一起无法应对文本格式添加逗号的要求
	}*/
	///文件头结束
	///文件体开始
	public void table_name() {
		System.out.print("表名称");
	}
	public void describe() {
		System.out.print("分条描述数据");
	}
	/*
	public void file_body() {
		System.out.println("表名称、然后分条描述数据");
	}*/
	///文件体结束
	///文件尾开始
	public void file_tail() {
		System.out.println("输出人:");
	}
	///文件尾结束
}

 

package Mr_Wang;
//适配器
public class Adapter extends File implements Robot{
	public void head() {
		System.out.print("机器人输出文件头");
		super.number();
		if(get_type().equals("text")) {
			System.out.print(",");
		}
		super.date();
	}
	public void body() {
		System.out.print("机器人输出文件体");
		//super.file_body();
		super.table_name();
		if(get_type().equals("text")) {
			System.out.println(" ");//另起一行
		}
		super.describe();
		if(get_type().equals("text")) {
			System.out.print(",");
		}
	}
	public void tail() {
		System.out.print("机器人输出文件尾");
		super.file_tail();
	}
}

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值