专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

策略模式是什么,策略模式的介绍及使用场景

来源:小易整编  作者:小易  发布时间:2023-03-21 08:15
摘要:策略模式是什么,策略模式的介绍及使用场景前言在实际开发过程中经常会出现行为不同的实现,比如支付,那可能是微信支付,阿里支付,银联等支付的具体实现。要你用一个设计模式来实现定义策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换...

策略模式是什么,策略模式的介绍及使用场景

前言

在实际开发过程中经常会出现行为不同的实现,比如支付,那可能是微信支付,阿里支付,银联等支付的具体实现。要你用一个设计模式来实现

定义

策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户

UML类图

策略模式是什么,策略模式的介绍及使用场景

具体实现InitializingBean接口说明

1、InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。

2、spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。

3、在Spring初始化bean的时候,如果该bean实现了InitializingBean接口,并且同时在配置文件中指定了init-method,系统则是先调用afterPropertieSet()方法,然后再调用init-method中指定的方法。

策略工厂

import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class StrategyFactory {    private static final Map

支付枚举

import lombok.AllArgsConstructor;import lombok.Getter;@Getter@AllArgsConstructorpublic enum PayTypeEnum {    WX("wx", "微信"),    ZFB("zfb","支付宝支付"),;    private String type;    private String desc;}

具体业务类1、支付入口

public interface PayService {    Boolean pay(String payType);}

2、支付入口具体实现

微信支付逻辑

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.stereotype.Service;@Service@Slf4jpublic class WxPayService implements PayService, InitializingBean {    @Override    public void afterPropertiesSet() throws Exception {        StrategyFactory.register(PayTypeEnum.WX,this);    }    @Override    public Boolean pay(String payType) {        log.info("调用微信支付");        return true;    }}

阿里支付具体逻辑

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.stereotype.Service;@Service@Slf4jpublic class AliPayService implements PayService, InitializingBean {    @Override    public void afterPropertiesSet() {        StrategyFactory.register(PayTypeEnum.ZFB, this);    }    @Override    public Boolean pay(String payType) {        log.info("调用阿里支付");        return true;    }}

3、定义一个控制器测试

import com.example.demo.celuemoshi.StrategyFactory;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class PayController {    @GetMapping("pay/{type}")    public boolean pay(@PathVariable("type") String type){        StrategyFactory.getService(type);       return true;    }}

测试结果

测试微信支付:http://localhost:10001/pay/wx

策略模式是什么,策略模式的介绍及使用场景

测试阿里支付:http://localhost:10001/pay/zfb

策略模式是什么,策略模式的介绍及使用场景


本文地址:IT问答频道 https://www.hkm168.com/itwenda/935423.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


IT问答
小编:小易整编
相关文章相关阅读
  • 总结CreateJS的详细介绍

    总结CreateJS的详细介绍

    CreateJS库是一款HTML5游戏开发的引擎,是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低HTML5项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验。掌握了CreateJS可以更方便的完成HTM...

  • CSS代码格式化的不同的表现方式介绍

    CSS代码格式化的不同的表现方式介绍

    本文将重点介绍css格式的不同方式,这与组织css的方式不同,仅仅是相关的概念,我认为组织更多地与事物分组和排序有关,而格式化与间距和缩进有关。格式化与CSS的功能无关。这些仅仅是程序员的自己选择,但这并不是说格式化对于css来说不重要,就...

  • js中有哪些事件?js中常用事件的介绍

    js中有哪些事件?js中常用事件的介绍

    javascript使我们有能力创建动态页面。事件是可以被javascript侦测到的行为。网页中的每个元素都可以产生某些可以触发javascript函数的事件。那么,js中有哪些事件呢?本篇文章将给大家来介绍关于js中常用的事件。话不多说...

  • chdir函数介绍与使用方法详解

    chdir函数介绍与使用方法详解

    chdir()函数改变当前的目录。此函数成功则返回TRUE。失败则返回FALSE,且抛出E_WARNING级别的错误。实例代码输出结果:Changed current directory successfully Explanat...

  • Vue中Mixin的使用方法和注意点介绍

    Vue中Mixin的使用方法和注意点介绍

    vue.js是当今web开发中最受欢迎的前端框架之一。它为构建大型、灵活和高效的web应用程序提供了一流的开发体验。vue.js的特性之一就是它支持mixin,一个很有用的概念,它允许我们在不同的组件中共享一些公共代码。本文将介绍Vue中M...

  • windows10设备管理器在哪儿windows10设备管理器部位详细介绍

    windows10设备管理器在哪儿windows10设备管理器部位详细介绍

    设备管理器在系统软件中是个可以检查现阶段联接到操作系统的机器设备一览的作用管理器,在这儿可以随时见到全部接入的机器设备,而且还能够查验现阶段机器设备的情况和禁止使用机器设备,那麼windows10设备管理器在哪儿呢,有的客户尽管了解这一管理...

  • wapi是什么东西详细介绍

    wapi是什么东西详细介绍

    wapi这个名词用户们可能在使用网络得时候见到过,但是对于一部分人来说肯定都不知道wapi是什么,下面就带来了详细介绍,帮助不知道小伙伴去了解。wapi是什么东西:答:wapi是无线局域网鉴别和保密的基础结构。这就像红外线和蓝牙等功能一样,...

  • Python函数介绍:repr函数的用法和示例

    Python函数介绍:repr函数的用法和示例

    Python函数介绍:repr函数的用法和示例Python是一种广泛应用于各种领域的高级编程语言,它为开发者提供了众多强大的函数和方法。其中,repr函数是一个非常有用的函数之一,它可以用于返回一个对象的字符串表示。在Python中,rep...

  • 周排行
  • 月排行
  • 年排行

精彩推荐