根据最近工作需要,琢磨了一个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,执行结果
具体各自的读写方法,各位自己实现吧