核心:提供一个创建对象的功能,不关心具体实现
例子
//根据配置文件
1.assets 创建config.properties
create_a=xxxx
2.class PropertiesFactory
public static Api createApi(Context context) {
try {
// 加载配置文件
Properties props = new Properties();
// 如果放入了 app/src/main/assets文件中
InputStream inputStream = context.getAssets().open("config.properties");
// 如果放入了 app/src/main/res/raw 文件中
// InputStream inputStream = context.getResources().openRawResource("config.properties");
// Java的写法
// InputStream inputStream = PropertiesFactory.class.getResourceAsStream("assets/config.properties");
props.load(inputStream);
Class clazz = Class.forName(props.getProperty("create_b"));
return (Api) clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3.实现
// 根据配置文件产生不同的实现
Api api = PropertiesFactory.createApi(this);
if (api != null) api.create();
参考:
网易云课程
网友评论