/**
*
*
* @author Bean
* @date 2016年1月21日 上午11:47:12
* @version 1.0
*
*/
public interface IConfigLoader<T> {
/**
* load the config typed by T
*
* @return
* @throws ConfigException
*/
public T load() throws ConfigException;
}
IConfigLoader<AppleConfig> loader = new AppleConfigLoader<AppleConfig>(); AppleConfig config = loader.load();
/**
*
*
* @author Bean
* @date 2016年1月21日 上午11:54:28
* @version 1.0
*
*/
public interface IConfigProvider<T> {
/**
* provide a config source used for loading config
*
* @return
* @throws ConfigException
*/
public T provide() throws ConfigException;
}
/**
*
*
* @author Bean
* @date 2016年1月21日 上午11:56:28
* @version 1.0
*
*/
public class ConfigProviderFactory {
private ConfigProviderFactory() {
throw new UnsupportedOperationException("Unable to initialize a factory class : "
+ getClass().getSimpleName());
}
public static IConfigProvider<Document> createDocumentProvider(String filePath) {
return new DocumentProvider(filePath);
}
public static IConfigProvider<Properties> createPropertiesProvider(String filePath) {
return new PropertiesProvider(filePath);
}
public static IConfigProvider<Digester> createDigesterProvider(String filePath) {
return new DigesterProvider(filePath);
}
}
/**
*
*
* @author Bean
* @date 2016年1月21日 上午11:59:19
* @version 1.0
*
*/
public abstract class AbstractConfigLoader <T, U> implements IConfigLoader<T>{
protected IConfigProvider<U> provider;
protected AbstractConfigLoader(IConfigProvider<U> provider) {
this.provider = provider;
}
/*
* @see IConfigLoader#load()
*/
@Override
public T load() throws ConfigException {
return load(getProvider().provide());
}
public abstract T load(U loaderSource) throws ConfigException;
protected IConfigProvider<U> getProvider() {
return this.provider;
}
}
<market>
<apple>
<color>red</color>
<price>100</price>
</apple>
<egg>
<weight>200</weight>
</egg>
</market>
port1=Steve Jobs port2=Bill Gates port3=Kobe Bryant
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:03:37
* @version 1.0
*
*/
public class MarketConfig {
private AppleConfig appleConfig;
private EggConfig eggConfig;
private OwnerConfig ownerConfig;
public AppleConfig getAppleConfig() {
return appleConfig;
}
public void setAppleConfig(AppleConfig appleConfig) {
this.appleConfig = appleConfig;
}
public EggConfig getEggConfig() {
return eggConfig;
}
public void setEggConfig(EggConfig eggConfig) {
this.eggConfig = eggConfig;
}
public OwnerConfig getOwnerConfig() {
return ownerConfig;
}
public void setOwnerConfig(OwnerConfig ownerConfig) {
this.ownerConfig = ownerConfig;
}
}
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:03:45
* @version 1.0
*
*/
public class AppleConfig {
private int price;
private String color;
public void setPrice(int price) {
this.price = price;
}
public int getPrice() {
return this.price;
}
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return this.color;
}
}
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:03:58
* @version 1.0
*
*/
public class EggConfig {
private int weight;
public void setWeight(int weight) {
this.weight = weight;
}
public int getWeight() {
return this.weight;
}
}
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:04:06
* @version 1.0
*
*/
public class OwnerConfig {
private Map<String, String> owner = new HashMap<String, String>();
public void addOwner(String portName, String owner) {
this.owner.put(portName, owner);
}
public String getOwnerByPortName(String portName) {
return this.owner.get(portName);
}
public Map<String, String> getOwners() {
return Collections.unmodifiableMap(this.owner);
}
}
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:24:50
* @version 1.0
*
*/
public class OwnerConfigLoader extends AbstractConfigLoader<OwnerConfig, Properties>{
/**
* @param provider
*/
protected OwnerConfigLoader(IConfigProvider<Properties> provider) {
super(provider);
}
/*
* @see AbstractConfigLoader#load(java.lang.Object)
*/
@Override
public OwnerConfig load(Properties props) throws ConfigException {
OwnerConfig ownerConfig = new OwnerConfig();
/**
* 利用props,设置ownerConfig的属性值
*
* 此处代码省略
*/
return ownerConfig;
}
}
import org.w3c.dom.Document;
/**
*
*
* @author Bean
* @date 2016年1月21日 下午11:18:56
* @version 1.0
*
*/
public class MarketConfigLoader extends AbstractConfigLoader<MarketConfig, Document> {
/**
* @param provider
*/
protected MarketConfigLoader(IConfigProvider<Document> provider) {
super(provider);
}
/*
* AbstractConfigLoader#load(java.lang.Object)
*/
@Override
public MarketConfig load(Document document) throws ConfigException {
MarketConfig marketConfig = new MarketConfig();
AppleConfig appleConfig = new AppleConfig();
EggConfig eggConfig = new EggConfig();
/**
* 在这里处理document,然后就能得到
* AppleConfig和EggConfg
*
* 此处代码省略
*/
marketConfig.setAppleConfig(appleConfig);
marketConfig.setEggConfig(eggConfig);
/**
* 由于OwnerConfig是需要properties方式来加载,不是xml
* 所以这里要新建一个OwnerConfigLoader,委托它来加载OwnerConfig
*/
OwnerConfigLoader ownerConfigLoader = new OwnerConfigLoader(ConfigProviderFactory.createPropertiesProvider(YOUR_FILE_PATH));
OwnerConfig ownerConfig = ownerConfigLoader.load();
marketConfig.setOwnerConfig(ownerConfig);
return marketConfig;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有