策略模式结合工厂模式减少不必要的if else
2020-07-14 04:32
381 查看
@[TOC]策略模式结合工厂模式减少不必要的if else(这里写自定义目录标题)
实现功能 - 不同平台字段对应枚举值不同,为了适配第三方平台枚举值
接口类
public interface IStrategy { String transformEnum(String key); }
实现类1
public class GlassClassTypeStrategy implements IStrategy { private static Map<String ,String> map; static { map = new HashMap<>(); map.put("1" , "1"); /// key 第三方枚举值 , value 我方平台枚举值 map.put("2" , "3"); map.put("3" , "4"); } @Override public String transformEnum(String key) { return map.get(key); } }
实现类2
public class HairClassTypeStrategy implements IStrategy { private static Map<String ,String> map; static { map = new HashMap<>(); map.put("1" , "3"); map.put("2" , "4"); map.put("3" , "5"); } @Override public String transformEnum(String key) { return map.get(key); } }
简单工厂
public class ContextStrategyFactory { private ContextStrategyFactory(){} private static Map<String , IStrategy> map ; static { map =new HashMap<>(); map.put(Type.GLASS_TYPE, new GlassClassTypeStrategy()); map.put(Type.HAIR_TYPE, new HairClassTypeStrategy()); } public static String getEnumType(String type , String enumStr){ return map.get(type).transformEnum(enumStr); } private interface Type{ String GLASS_TYPE = "ul_glass"; String HAIR_TYPE = "ul_hair"; } }
测试类
public class Test { public static void main(String[] args) { System.out.println(ContextStrategyFactory.getEnumType("ul_hair", "2")); } }
总结: 使用策略模式结合工厂模式可以减少大量的if else 或者 switch 语句,并且增强代码的可扩展性。
相关文章推荐
- 设计模式——行为型模式之借助策略模式(Strategy Pattern)减少使用不必要的if-else if -else和switch-case(三)
- 结合策略模式和HashMap摆脱if else
- 使用策略模式减少if else
- 3.续策略模式 策略模式与简单工厂模式结合
- 简单工厂与策略模式的结合
- 注解实现策略模式干掉if-else(下)
- 简单工厂设计模式实现商店买牙膏收费案例过渡到结合策略模式的理由全解
- 简单工厂和策略模式结合
- 注解实现策略模式干掉if-else(上)
- java设计模式之策略结合工厂模式
- 策略模式、简单工厂结合
- 策略模式结合简单工厂模式
- 利用策略模式和工厂模式优化代码中过多的if-else
- 学习设计模式之结合简单工厂,策略,装饰的计算器
- 简单工厂模式和策略模式结合使用php
- 策略模式结合简单工厂模式
- 业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们!
- 设计模式-策略模式Strategy以及消灭if else
- 策略模式:再见if-else
- Android设计模式 -- 巧用策略模式告别过多的 if...else...