java 多态例子 文件内容读取转化写入

根据最近工作需要,琢磨了一个java多态的例子。

txt 格式的文件转化成 html 格式的文件,如何使用 java 实现。

扩展引申出 txt 、 doc 、 html 等多种格式互相转化,如何使用 java 实现更合适。

下面是所有代码,

1,父类,自定义文件

public class CustomFile {
	
	public String read() {
		System.out.println("Custome File read");
		return null;
	}
	
	public void write(String str) {
		System.out.println("Custome File write");
	}

}

2,多个子类,txt 、html 、 doc 分别实现各自的读取和写入方法

public class TxtCustomFile extends CustomFile{

	public String read() {
		System.out.println("Txt Custome File read");
		return null;
	}
	
	public void write(String str) {
		System.out.println("Txt Custome File write");
	}
}
public class HtmlCustomFile extends CustomFile {
	
	public String read() {
		System.out.println("Html Custome File read");
		return null;
	}

	public void write(String str) {
		System.out.println("Html Custome File write");
	}
}
public class DocCustomFile extends CustomFile{
	
	public String read() {
		System.out.println("Doc Custome File read");
		return null;
	}
	
	public void write(String str) {
		System.out.println("Doc Custome File write");
	}
}

3,加入一个工具类,完成内容转化工作

public class CustomFileUtil {

	/**
	 * 这里根据类的实际类型,调用不同的执行方法
	 * @param source
	 * @param dest
	 * @param str
	 * @return
	 */
	public static String transform(CustomFile source, CustomFile dest, String str) {
		if(source instanceof TxtCustomFile) {
			if(dest instanceof HtmlCustomFile) {
				return transformTxtToHtml(str);
			}else if (dest instanceof DocCustomFile) {
				return transformTxtToDoc(str);
			}else {
				return null;
			}
		}else if(source instanceof HtmlCustomFile) {
			if(dest instanceof TxtCustomFile) {
				return transformHtmlToTxt(str);
			}else if (dest instanceof DocCustomFile) {
				return transformHtmlToDoc(str);
			}else {
				return null;
			}
		}else if(source instanceof DocCustomFile) {
			if(dest instanceof HtmlCustomFile) {
				return transformDocToHtml(str);
			}else if (dest instanceof TxtCustomFile) {
				return transformDocToTxt(str);
			}else {
				return null;
			}
		}else {
			return null;
		}
	}

	public static String transformTxtToHtml(String txt) {
		System.out.println("txt transform html");
		return null;
	}

	public static String transformTxtToDoc(String txt) {
		System.out.println("txt transform doc");
		return null;
	}

	public static String transformHtmlToTxt(String html) {
		System.out.println("html transform txt");
		return null;
	}

	public static String transformHtmlToDoc(String html) {
		System.out.println("html transform doc");
		return null;
	}

	public static String transformDocToHtml(String doc) {
		System.out.println("doc transform html");
		return null;
	}

	public static String transformDocToTxt(String doc) {
		System.out.println("doc transform txt");
		return null;
	}
}

4,写一个实现整个转化过程的类

/**
 * 文件格式转换
 * @author KevinRenQiang
 *
 */
public class CustomFileTransformTest {

	/**
	 * 实现文件格式转化
	 * @param source 源文件
	 * @param dest 目的文件
	 */
	public void transform(CustomFile source, CustomFile dest) {
		// 调用源文件 的读取方式,获取内容
		String str = source.read();
		// 调用专门的转化内容方法,获取目的内容
		str = CustomFileUtil.transform(source, dest, str);
		// 把目的内容写入到目的文件中
		dest.write(str);
	}
	
	public static void main(String[] args) {
		CustomFile source = new TxtCustomFile();
		CustomFile dest = new HtmlCustomFile();
		CustomFileTransformTest test = new CustomFileTransformTest();
		//这个方法不简单,使用了多态属性,三个子类实现了父类的方法
		test.transform(source, dest);
	}
}

5,执行结果

执行结果

具体各自的读写方法,各位自己实现吧

猜你喜欢

转载自blog.csdn.net/u013276512/article/details/114833135