工廠+模板方法設計模式
阿新 • • 發佈:2021-01-12
有時後經常需要寫很多的if判斷語句,導致了程式碼的十分冗餘,可讀性不高,下面以工廠設計模式+策略設計模式提供一種可替代的寫法,簡化程式碼
工廠設計模式:Factory2
import com.google.common.collect.Maps; import org.springframework.util.StringUtils; import java.util.Map; /** * 工廠設計模式 */ public class Factory2 { private static Map<String, AbstractHandler> strategyMap = Maps.newHashMap();public static AbstractHandler getInvokeStrategy(String str) { return strategyMap.get(str); } public static void register(String str, AbstractHandler handler) { if (StringUtils.isEmpty(str) || null == handler) { return; } strategyMap.put(str, handler); } }
模板方法設計模式 AbstractHandler
/** * 模板方法設計模式 */ public abstract class AbstractHandler implements InitializingBean { public void AAA(String name) { throw new UnsupportedOperationException(); } public String BBB(String name) { throw new UnsupportedOperationException(); } }
模板方式:LiSiHandler2
@Component public class LiSiHandler2 extends AbstractHandler { @Override public String BBB(String name) { // 業務邏輯B return "李四完成任務B"; } @Override public void afterPropertiesSet() throws Exception { Factory2.register("李四", this); } }
模板方式:TianQiHandler2
import org.springframework.stereotype.Component; @Component public class TianQiHandler2 extends AbstractHandler { @Override public void AAA(String name) { // 業務邏輯A System.out.println("田七完成任務A"); } @Override public void afterPropertiesSet() throws Exception { Factory2.register("田七", this); } }
模板方式:WangWuHandler2
import org.springframework.stereotype.Component; @Component public class WangWuHandler2 extends AbstractHandler { @Override public String BBB(String name) { // 業務邏輯B return "王五完成任務B"; } @Override public void afterPropertiesSet() throws Exception { Factory2.register("王五", this); } }