工厂方法

 

问题

某软件公司欲开发一个数据格式转换工具,可以将不同数据源如txt文件、数据库、Excel表格中的数据转换成XML格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操作。绘制该类图,并选择一种语言编程实现。

 

UML图

代码:

 

package factoryMethod02;

public interface dataFactory {//数据工厂接口
    public void getData();
    
}

 

package factoryMethod02;

public interface Convertor {//产品接口
    public void transform();

}

 

package factoryMethod02;

public class txtData implements dataFactory{//txt工厂实现类
    public void getData() {
        System.out.println("成功创建txt");
        
    }

}
package factoryMethod02;

public class txtConvertor implements Convertor{//txt产品实现类
    public void transform() {
        System.out.println("成功将txt转换成XML");
    }


}
package factoryMethod02;

public class excelData implements dataFactory{//excel工厂实现类
    public void getData() {
        System.out.println("成功创建excel文件");
    }

}
package factoryMethod02;

public class excelConvertor implements Convertor{//excel产品实现类
    public void transform() {
        System.out.println("成功将excel转换成XML");
    }


}
package factoryMethod02;

public class databaseData implements dataFactory {//数据库工厂实现类
    public void getData() {
        System.out.println("成功创建database文件");
    }

}
package factoryMethod02;

public class databaseConvertor implements Convertor{//数据库产品实现类
    public void transform() {
        System.out.println("成功将database转换成XML");
    }


}
package factoryMethod02;

public class Client {
    public static void main(String[] args) {
        Convertor txtconvertor = new txtConvertor();
        dataFactory txtdata = new txtData();
        txtdata.getData();
        txtconvertor.transform();
        
        Convertor databaseconvertor = new databaseConvertor();
        dataFactory databasedata = new databaseData();
        databasedata.getData();
        databaseconvertor.transform();
        
        Convertor excelconvertor = new excelConvertor();
        dataFactory exceldata = new excelData();
        exceldata.getData();
        excelconvertor.transform();
        
    }

}

 

posted @ 2020-03-25 14:33  tang_lei  阅读(233)  评论(0)    收藏  举报