package com.fm.component;
public class Client {
public static void main(String[] args) {
OperaterBiz ob = new OperaterByDb();
ob.exportData("测试数据");
}
}
package com.fm.component;
import com.fm.service.DataExportService;
/**
* 业务处理类,供客户端调用
* @author admin
*
*/
public abstract class OperaterBiz {
public void exportData(String data) {// 共同业务逻辑处理
System.out.println("---------------进行一系列业务处理");
DataExportService des = factoryMethod();
// 调用具体实现
des.export(data);
}
// 由子类决定
protected abstract DataExportService factoryMethod();
}
package com.fm.component;
import com.fm.service.DataExportService;
import com.fm.service.impl.DataExportByDb;
public class OperaterByDb extends OperaterBiz{
@Override
protected DataExportService factoryMethod() {
return new DataExportByDb();
}
}
package com.fm.component;
import com.fm.service.DataExportService;
import com.fm.service.impl.DataExportByFile;
public class OperaterByFile extends OperaterBiz{
@Override
protected DataExportService factoryMethod() {
return new DataExportByFile();
}
}
package com.fm.component;
import com.fm.service.DataExportService;
import com.fm.service.impl.DataExportByXML;
public class OperaterByXML extends OperaterBiz{
@Override
protected DataExportService factoryMethod() {
return new DataExportByXML();
}
}
package com.fm.service;
/**
* 数据具体导出方式接口定义
* @author admin
*
*/
public interface DataExportService {
public void export(String data);
}
package com.fm.service.impl;
import com.fm.service.DataExportService;
public class DataExportByDb implements DataExportService {
@Override
public void export(String data) {
System.out.println("通过DB的方式导出");
}
}
package com.fm.service.impl;
import com.fm.service.DataExportService;
public class DataExportByFile implements DataExportService {
@Override
public void export(String data) {
System.out.println("通过text的方式导出");
}
}
package com.fm.service.impl;
import com.fm.service.DataExportService;
public class DataExportByXML implements DataExportService {
@Override
public void export(String data) {
System.out.println("通过xml的方式导出");
}
}