NET 8.0 中的策略模式,具有依赖注入的最小 API

策略模式是一种行为设计模式,它允许您定义一系列算法,封装每个算法并使它们可互换。此模式在需要在运行时切换不同算法的情况下特别有用。在本文中,我们将探讨如何使用具有依赖项注入的最小 API 在.NET中实现策略模式。

一. 实时支付处理系统示例

我们将创建一个支持多种付款方式的 Web API:微信、支付定、信用卡。我们将使用策略模式封装每种付款方式并在它们之间动态切换。

二. 逐步实现

1. 定义策略接口

创建一个接口IPaymentStrategy,声明一个方法ProcessPayment(decimal amount)来标准化支付处理逻辑。

public interface IPaymentStrategy
{
    void ProcessPayment(decimal amount);
}

2. 实施具体策略

在 WeiXinPaymentStrategy、AliPaymentStrategy和CreditCardPaymentStrategy等类中实现 IPaymentStrategy 接口,每个类都提供处理付款的特定逻辑。

public class WenXinPaymentStrategy : IPaymentStrategy
{
    public void ProcessPayment(decimal amount)
    {
        // 微信支付逻辑
        Console.WriteLine($"微信支付{amount:C}");
    }
}

public class AliPaymentStrategy : IPaymentStrategy
{
    public void ProcessPayment(decimal amount)
    {
        // 支付宝支付逻辑
        Console.WriteLine($"支付宝支付{amount:C}");
    }
}

public class CreditCardPaymentStrategy : IPaymentStrategy
{
    public void ProcessPayment(decimal amount)
    {
       // 信用卡支付逻辑
        Console.WriteLine($"信用卡支付 {amount:C}");
    }
}

3. 为上下文创建接口

定义一个接口IPaymentContext,声明方法SetPaymentStrategy(IPaymentStrategy paymentStrategy)和ExecutePayment(decimal amount)来管理和执行所选的支付策略。

public interface IPaymentContext
{
    void SetPaymentStrategy(IPaymentStrategy paymentStrategy);
    void ExecutePayment(decimal amount);
}

4.实现 PaymentContext 类

在PaymentContext类中实现IPaymentContext接口,存储当前的支付策略并调用其ProcessPayment方法。

public class PaymentContext : IPaymentContext
{
    private IPaymentStrategy _paymentStrategy;

    public void SetPaymentStrategy(IPaymentStrategy paymentStrategy)
    {
        _paymentStrategy = paymentStrategy;
    }

    public void ExecutePayment(decimal amount)
    {
        _paymentStrategy.ProcessPayment(amount);
    }
}

5. 最小 API 配置

依赖注入:向依赖注入容器注册 PaymentContext 和具体策略类。
Endpoint:定义一个POST端点/pay,接受金额和方式作为参数,根据方式设置合适的支付策略,并处理支付。

using Payment.Api.Implementations;
using Payment.Api.Interfaces;

var builder = WebApplication.CreateBuilder(args);

//向容器中添加服务。
//注册服务
builder.Services.AddSingleton<IPaymentContext, PaymentContext>();
builder.Services.AddSingleton<WeiXinPalPaymentStrategy>();
builder.Services.AddSingleton<AliPaymentStrategy>();
builder.Services.AddSingleton<CreditCardPaymentStrategy>();

//配置Swagger/OpenAPI
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

//配置HTTP请求管道
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.MapPost("/pay", async (decimal amount,
                           string method,
                           IPaymentContext paymentContext,
                           IServiceProvider serviceProvider) =>
{
    IPaymentStrategy strategy = method.ToLower() switch
    {
       "weixin" => serviceProvider.GetService<WeiXinPaymentStrategy>(),
        "ali" => serviceProvider.GetService<AliPaymentStrategy>(),
        "creditcard" => serviceProvider.GetService<CreditCardPaymentStrategy>(),
        _ => throw new NotSupportedException("选择的付款方式无效。")
    };

    paymentContext.SetPaymentStrategy(strategy);
    paymentContext.ExecutePayment(amount);

    return Results.Ok($"支付 {amount:C} 使用 {method} 处理成功.");
});

6.运行应用程序

构建并运行:使用 dotnet run 运行应用程序。
测试端点:您可以通过向 /pay 发送带有 JSON 有效负载的 POST 请求来测试付款处理。

三. 结论

通过将策略模式与 .NET 8.0 中的最小 API 集成并使用依赖项注入,我们创建了一个灵活且可维护的支付处理系统。这种方法允许您在运行时轻松切换不同的支付方式,并与 .NET 中的现代开发实践保持一致。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要下载安卓8.0 API文手册,可以通过以下步骤进行: 1. 打开浏览器,进入安卓开发者官网(developer.android.com)。 2. 在官网顶部的搜索框输入“API 文档”或者“API 文手册”。 3. 页面会显示出相关的搜索结果,找到安卓8.0版本的API文档。 4. 点击进入API文档页面,可以看到英文版本的手册。 5. 在手册页面上方的语言选项选择“文”,页面将自动显示为文版本。 6. 滚动页面,查找下载按钮或者链接,选择下载API文手册的选项。 7. 确认下载选项后,手册会开始下载到本地设备。 8. 下载完成后,可以通过文件管理器找到手册并进行查看。 如果无法找到文的API手册,还可以尝试在搜索引擎搜索“安卓8.0 API文手册下载”,会出现一些第三方网站提供的文手册下载链接,但请注意确认下载的文件安全性以及准确性。 ### 回答2: 要在安卓8.0API文手册下载,您可以按照以下步骤操作: 1. 打开您的浏览器,进入Android官方开发者网站(https://developer.android.com/ )。 2. 在网站的顶部导航栏,找到“文档”按钮并点击。 3. 在文档页面,您可以看到“API参考”一栏,点击进入。 4. 在API参考页面,您可以看到左侧的菜单栏,其包含了不同版本的API文档。找到并选择“Android 8.0API级别 26)”版本。 5. 在选择了Android 8.0版本后,页面会自动跳转到目标页面,您可以看到该版本下的所有API接口列表。 6. 在页面的右上角有一个搜索框,您可以使用关键词搜索您需要的API。 7. 如果您希望下载整个API手册,可以在页面左上角找到一个红色的"Download"按钮,点击后会弹出下载选项。 8. 选择合适的下载格式(PDF或者HTML),然后点击下载按钮进行下载。 需要注意的是,由于API手册包含了大量的文档内容,所以下载文件的大小可能会比较大。此外,由于Android开发平台的更新和升级,建议您在开发过程查阅官方网站上最新版本的API文档,以获得最新的信息和功能支持。 ### 回答3: 您好!安卓8.0 API 文手册可以从以下渠道进行下载: 1. 官方文档:您可以通过访问官方开发者网站(developer.android.com)下载最新版本的安卓 API 文手册。在该网站上,您可以找到完整的安卓开发文档,包括API参考、教程和示例代码等。 2. 第三方网站:除了官方网站,一些第三方网站也提供了安卓 API文手册下载。您可以通过搜索引擎找到这些网站,并根据您的需要下载相关文档。 3. 开发者社区:安卓开发者社区经常有开发者分享并发布安卓 API 文手册的资源。您可以加入一些开发者论坛或者社交媒体群组,与其他开发者互动交流,并获取所需的文档下载链接。 无论您选择哪种方式下载安卓8.0 API文手册,建议您注意文档的来源可靠性和准确性,确保所下载的文档与您的开发环境相匹配。此外,官方文档通常是最及时和权威的资源,推荐首先尝试从官方网站获取所需文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢.锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值