欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 策略模式+模版模式+工厂模式

策略模式+模版模式+工厂模式

2025/6/7 4:15:54 来源:https://blog.csdn.net/m0_57801749/article/details/142335321  浏览:    关键词:策略模式+模版模式+工厂模式

工厂模式:

(1)避免类中出现过多的组合依赖

(2)同时减少代码中出现过多的if...else if...语句

(2)将调用者跟我们的实现类解耦

模版模式:

(1)功能复用

(2)方便扩展

策略模式:

(1)方便功能的扩展和维护

(2)防止过多的业务耦合

(3)避免使用多重条件判断

1. 抽象类

/*** 策略模式:不同类型选择不同的实现策略* */
public interface AbstractStrategy {/*** 模版模式:不同策略实现同一接口的共性部分(公共方法)* */default void commentMeth(){System.out.println("模版方法");}void handle(Object object);
}

2.抽象的实现 

@Service
public class AchieveOneStrategy implements AbstractStrategy{@Overridepublic void handle(Object obj) {}
}
@Service
public class AchieveTwoStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}
@Service
public class AchieveThreeStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}

3.枚举

public enum StrategyTypeEnum {ONE_STRATEGY(0,AchieveOneStrategy.class),TWO_STRATEGY(1,AchieveTwoStrategy.class),THREE_STRATEGY(2,AchieveThreeStrategy.class),;Integer type;Class<? extends AbstractStrategy> aClass;StrategyTypeEnum(Integer type, Class<? extends AbstractStrategy> aClass){this.type = type;this.aClass = aClass;}
}

4.工厂

/*** 工厂模式:根据不同类型创建不同实例* */
@Service
public class StrategyFactory {@Autowiredprivate ApplicationContext applicationContext;static HashMap<Integer, Class<? extends AbstractStrategy>> strategyHashMap = new HashMap<>();static {for (StrategyTypeEnum value : StrategyTypeEnum.values()) {strategyHashMap.put(value.type, value.aClass);}}public AbstractStrategy executeStrategy(Integer flag){Class<? extends AbstractStrategy> aClass = strategyHashMap.get(flag);return applicationContext.getBean(aClass);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词