当前位置: 首页 > wzjs >正文

创业做网站需要哪些一手房发帖网站怎样做

创业做网站需要哪些,一手房发帖网站怎样做,紫色网站,小说推广赚钱一、传统策略模式的痛点与突破 1.1 传统策略实现回顾 // 传统支付策略接口 public interface PaymentStrategy {void pay(BigDecimal amount); }// 具体策略实现 public class AlipayStrategy implements PaymentStrategy {public void pay(BigDecimal amount) { /* 支付宝支…

一、传统策略模式的痛点与突破

1.1 传统策略实现回顾

// 传统支付策略接口
public interface PaymentStrategy {void pay(BigDecimal amount);
}// 具体策略实现
public class AlipayStrategy implements PaymentStrategy {public void pay(BigDecimal amount) { /* 支付宝支付逻辑 */ }
}// 策略上下文
public class PaymentContext {private PaymentStrategy strategy;public void setStrategy(PaymentStrategy strategy) {this.strategy = strategy;}public void executePayment(BigDecimal amount) {strategy.pay(amount);}
}

存在问题
❌ 策略类型固定,无法通用化
❌ 新增策略需修改上下文类
❌ 无法动态管理策略集合


二、泛型化策略工具类设计

2.1 核心接口定义

/*** 通用策略接口* @param <T> 策略参数类型* @param <R> 返回结果类型*/
public interface GenericStrategy<T, R> {/*** 是否支持当前策略类型*/boolean support(String strategyType);/*** 执行策略*/R apply(T param);
}

2.2 策略上下文工具类

public class StrategyContext<T, R> {private final Map<String, GenericStrategy<T, R>> strategyMap = new ConcurrentHashMap<>();/*** 注册策略*/public void registerStrategy(String strategyType, GenericStrategy<T, R> strategy) {strategyMap.put(strategyType, strategy);}/*** 执行策略*/public R execute(String strategyType, T param) {GenericStrategy<T, R> strategy = Optional.ofNullable(strategyMap.get(strategyType)).orElseThrow(() -> new IllegalArgumentException("未找到策略: " + strategyType));return strategy.apply(param);}/*** 批量执行策略*/public List<R> executeAll(T param) {return strategyMap.values().stream().map(s -> s.apply(param)).collect(Collectors.toList());}
}

三、Spring集成与自动装配

3.1 自动注册策略实现

@Configuration
public class StrategyAutoConfiguration {/*** 自动发现所有策略Bean并注册*/@Beanpublic <T, R> StrategyContext<T, R> strategyContext(List<GenericStrategy<T, R>> strategies) {StrategyContext<T, R> context = new StrategyContext<>();strategies.forEach(strategy -> context.registerStrategy(strategy.getClass().getAnnotation(StrategyType.class).value(),strategy));return context;}
}/*** 策略类型注解*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface StrategyType {String value();
}

3.2 策略实现示例

@StrategyType("alipay")
@Component
public class AlipayStrategy implements GenericStrategy<PaymentRequest, PaymentResult> {@Overridepublic boolean support(String strategyType) {return "alipay".equals(strategyType);}@Overridepublic PaymentResult apply(PaymentRequest request) {// 支付宝支付具体实现}
}

四、企业级应用案例

4.1 支付策略路由

@RestController
@RequestMapping("/payment")
public class PaymentController {@Autowiredprivate StrategyContext<PaymentRequest, PaymentResult> paymentContext;@PostMapping("/{type}")public PaymentResult pay(@PathVariable String type, @RequestBody PaymentRequest request) {return paymentContext.execute(type, request);}
}

4.2 动态折扣计算

public enum DiscountType {NEW_USER, FESTIVAL, VIP_LEVEL
}public class DiscountStrategy implements GenericStrategy<DiscountType, BigDecimal> {private static final Map<DiscountType, BigDecimal> DISCOUNT_MAP = Map.of(DiscountType.NEW_USER, new BigDecimal("0.9"),DiscountType.FESTIVAL, new BigDecimal("0.8"),DiscountType.VIP_LEVEL, new BigDecimal("0.7"));@Overridepublic boolean support(String strategyType) {return Arrays.stream(DiscountType.values()).anyMatch(e -> e.name().equals(strategyType));}@Overridepublic BigDecimal apply(DiscountType type) {return DISCOUNT_MAP.get(type);}
}

五、高级功能扩展

5.1 策略优先级控制

public class PriorityStrategyContext<T, R> extends StrategyContext<T, R> {private final PriorityQueue<GenericStrategy<T, R>> priorityQueue = new PriorityQueue<>(Comparator.comparingInt(this::getPriority));private int getPriority(GenericStrategy<T, R> strategy) {return strategy.getClass().isAnnotationPresent(StrategyPriority.class) ?strategy.getClass().getAnnotation(StrategyPriority.class).value() : 0;}@Overridepublic void registerStrategy(String type, GenericStrategy<T, R> strategy) {super.registerStrategy(type, strategy);priorityQueue.offer(strategy);}public R executeFirst(T param) {return priorityQueue.peek().apply(param);}
}

5.2 策略执行监控

public class MonitoredStrategyContext<T, R> extends StrategyContext<T, R> {private final MeterRegistry meterRegistry;@Overridepublic R execute(String strategyType, T param) {Timer.Sample sample = Timer.start(meterRegistry);try {R result = super.execute(strategyType, param);sample.stop(meterRegistry.timer("strategy.execute.time", "type", strategyType));return result;} catch (Exception e) {meterRegistry.counter("strategy.error", "type", strategyType).increment();throw e;}}
}

六、最佳实践总结

  1. 合理定义策略边界:每个策略应聚焦单一职责

  2. 统一异常处理:定义策略执行异常体系

  3. 版本控制策略:支持多版本策略共存

  4. 动态配置支持:结合配置中心实现热更新

  5. 性能优化:缓存高频使用策略

http://www.dtcms.com/wzjs/575336.html

相关文章:

  • 行业门户网站模板下载it外包公司值得去吗
  • 建网站哪家最好wordpress数据库发布文章
  • 虚拟空间做网站最专业的网站建设价格
  • 建设数字官方网站简单网页html模板
  • 建官方网站的公司深圳建网站哪家公司好
  • 企业网站是企业在互联网上进行网络营销北京高端网站建设图片大全
  • 手机网站滑动效果梅州市网站制作
  • apache添加多个网站两个wordpress同步
  • 一个app一年可以赚多少优化营商环境 提升服务效能
  • 货代到哪个网站开发客户wordpress备案显示
  • 四川建设部网站官网公关公司是做什么的
  • 塔城地区建设工程信息网站呼和浩特做网站的公司
  • 网站ui外包设计院项目管理系统
  • wordpress站内查找wordpress怎么设置静态主页
  • 免费做海报的网站wordpress 漏洞
  • 在百度做推广需要网站吗网络公司优化关键词
  • osCommerce购物网站架设全攻略wordpress 主页模版
  • 创造网站无锡企业网站制作公司
  • 保定市网站建设建筑工程网签合同周末可以签吗
  • 用vs做的网站怎么打开吗晋江wap站是什么意思
  • 企业站seo案例分析网站点击软件排名
  • 介休网站建设自己做短视频的网站
  • filetype ppt 网站建设网站做系统叫什么软件
  • 腾讯分分彩做号网站南通网站建设找哪家好
  • 重庆网站建设公司咨询亿企帮航天信息企业管理软件
  • 潍坊做网站的网络公司建设信息发布平台多少钱
  • 太原网站设计开发公司网站建设试题以及答案
  • 电脑什么网站可以做长图攻略湖州百度网站建设
  • 建站公司佛山网站公司图片
  • 给公司做网站 优帮云定制礼品公司