一种无名的设计模式
问题
常见一个门面实现类,融合了N多的if/else,遂抽取了这种设计模式
类图
伪代码
//Facade
public void process(String key, Object...){
DataHandler handler = dataHandlerFactory.factory(key);
if (handler != null) {
try {
handler.handle(memberId, obj);
} catch (Exception e) {
log.error("Handle auth data sync", e);
}
}
//DefaultHandlerFactory
public Handler factory(String key) {
return handlerMap.get(key);
}
public void register(String key, Handler handler) {
handlerMap.put(key(dataType, dataStatus), handler);
}
\\AbstractHandler
public void registerSelf() {
dataHandlerFactory.register(key(), this);
}
/**
* spring bean初始化后此方法被调用
*/
@Override
public void afterPropertiesSet() throws Exception {
registerSelf();
}
public abstract String key();