//接口
interface ModuleConfig{
//一些getter setter find方法 对DataSource MessageResource ActionMapping等资源文件进行操作
}
//就是 具体产品类
class ModuleConfigImpl implements ModuleConfig{
//用于产生一个默认的ModuleConfig对象
public ModuleConfigImpl(String prefix){
//初始化默认的资源类型 大部分为null,一些指定了基本类型
}
/**Struts_config.xml中的<action-mapping>配置项*/
protected HashMap forwards;
protected HashMap messageResources;
//省略其他的一些属性
}
//工厂类
abstract class ModuleConfigFactory{
//创建产品
abstract ModuleConfig createModuleConfig(String prefix);
//获得工厂类对象
ModuleConfigFactory getModuleConfigFactory(String prefix){
//返回DefaultModuleConfigFactory对象
return new DefaultModuleConfigFactory(prefix);
}
}
//工厂类的默认实现
class DefaultModuleConfigFactory extends ModuleConfigFactory{
//实现抽象方法
ModuleConfig createModuleConfig(String prefix){
return new ModuleConfigImpl(prefix);
}
}
/**调用方法ActionServlet类中的init()方法:*/
//实例工厂类
ModuleConfigFactory moduleConfigFactory=ModuleConfigFactory.createModuleConfigFactory();
//获得产品
ModuleConfig moduleConfig=oduleConfigFactory.createModuleConfig(prefix);
Sturts使用工厂类创造了ModuleConfig对象,其实还是使用了面向接口编程的方法,利用接口来动态的指定其子类,便于扩展