当每个特征对于每个订阅具有不同的阈值数量和不同的时间间隔限制时,如何对订阅特征进行建模

问题描述 投票:0回答:1

我正在创建有 3 个订阅计划的 Spring Boot 应用程序。

  1. 基本
  2. 无限制

我有两个操作(1.CREATE_POST、2.GENERATE_POST)应针对每个计划进行限制。

  1. 对于基本计划,用户应该能够每天执行第一个操作 2 次,第二个操作每天执行 3 次。

  2. 对于专业计划,用户应该能够每天执行第一个操作 5 次,第二个操作每天执行 10 次。

  3. 对于无限计划,用户应该能够无限次地执行操作。

我想以灵活的方式设计功能,以便将来快速更改阈值和时间间隔, 假设对于基本计划,我想更改“第一次行动每周 3 次,第二次行动每周 5 次”。

我该如何设计?

spring-boot oop design-patterns database-design
1个回答
0
投票

软件设计和架构的一个问题是,最好的设计是在特定环境中解决(或避免)问题的设计。如果不了解上下文以及哪些力量作用于代码库及其维护者,就无法确定单个“最佳”解决方案。

但是,如果没有更多信息,我会接受 Ward Cunningham 的建议,使用可能有效的最简单的方法。

基于 OP,您可以有一个简单的配置类来跟踪阈值:

public class SubscriptionPlan {
    public SubscriptionPlan(int createLimit, int generateLimit) // ...
}

这应该使您能够创建三个计划对象:

SubscriptionPlan basicPlan = new SubscriptionPlan(2, 3);
SubscriptionPlan proPlan = new SubscriptionPlan(5, 10);
SubscriptionPlan unlimitedPlan =
    new SubscriptionPlan(Integer.MAX_VALUE, Integer.MAX_VALUE);

将这些

SubscriptionPlan
对象之一与每个用户相关联,并使用其限制值来检查每个受限操作。

更复杂的选择是可以想象的,但我不会推测,因为我不知道上下文。

© www.soinside.com 2019 - 2024. All rights reserved.