又叫做静态工厂方法(StaticFactory Method)模式,并不属于23中GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。
上面案例代码中我们已经把具体的策略,像 SupplySaleOrderStrategy、ShopSaleOrderStrategy 这些策略的实现,交给 spring 管理了,也就是说我们可以从 spring 的容器中获取到对应的 bean,当然也可以进行依赖注入,这就是Spring中IOC容器特性。 所以在工厂类中,我们定义了一个 strategyList 属性,并且使用 @RequiredArgsConstruct...
一、 方式一:结合 @PostConstruct 实现 @PostConstruct 注解是用来在 Spring 管理的 bean 初始化后立即执行某些方法。 这里通过 @PostConstruct 注解将各种实现类初始化之后加入到策略类集合Map中去。 1. 策略类 1@Component2publicclassFuzzyDateStyleimplementsShowDateStrategy {34//...56@PostConstruct7publicvoidinit...
通过上面特性可以做工厂模式 通过工厂来获取对应的策略 实例如下: form工厂 @Service public class AppFormFactory { private static final Map<String, IAppForm> STRATEGY_MAP = new ConcurrentHashMap<>(); public AppFormFactory(Map<String, IAppForm> map){ STRATEGY_MAP.clear(); map.forEach((k,v)->S...
具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELSE IF ELSE...。接下来咱们直接实现,项目结构图: 工厂类FactoryStrategy负责创建策略的工厂,代码比较简单,比较关键的一点是AutoWired一个Map<String, Strategy> 这个会在初始化的时候将所有的Strategy自动加载到Map中,是...
具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELSE IF ELSE...。接下来咱们直接实现,项目结构图: 工厂类FactoryStrategy负责创建策略的工厂,代码比较简单,比较关键的一点是AutoWired一个Map<String, Strategy> 这个会在初始化的时候将所有的Strategy自动加载到Map中,是...
如果策略增多,策略类的数量就会增加。对比上面的ifelse会发现增加了很多类。 策略工厂类改进 上面我们也看到了一个问题,就是客户端必须知道具体的策略实现类才能进行具体算法的调用。那么,是否可以将实现类进行封装,客户端只需传入对应的类型,然后直接调用方法就可以了?
具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELSE IF ELSE...。接下来咱们直接实现,项目结构图: 工厂类FactoryStrategy负责创建策略的工厂,代码比较简单,比较关键的一点是AutoWired一个Map这个会在初始化的时候将所有的Strategy自动加载到Map中,是不是很方便。使用concu...
简介:【SpringBoot】如何使用策略模式+抽象工厂+反射 最近用了策略模式+抽象工厂+反射写了一个计算器的Demo,本来写好了加法和减法,通过设计模式实现了不修改代码,通过增加新类和修改配置文件就可以增加乘法和除法,符合开闭原则。 分析 什么是反射 要想明白什么是反射,首先你要明白什么是正射,直接把类实例化就是正...
步骤一:创建策略接口 packagecom.prince.wechat.service;importcom.prince.wechat.bean.RequestMessage;importcom.prince.wechat.bean.ResponseMessage;/*** 微信用户消息策略*/publicinterfaceMessageStrategy{/*** 获取策略的类型* @return 返回代表策略类型的字符串*/publicStringgetType();/*** 处理消息的方法* @...