我正在创建有 3 个订阅计划的 Spring Boot 应用程序。
我有两个操作(1.CREATE_POST、2.GENERATE_POST)应针对每个计划进行限制。
对于基本计划,用户应该能够每天执行第一个操作 2 次,第二个操作每天执行 3 次。
对于专业计划,用户应该能够每天执行第一个操作 5 次,第二个操作每天执行 10 次。
对于无限计划,用户应该能够无限次地执行操作。
我想以灵活的方式设计功能,以便将来快速更改阈值和时间间隔, 假设对于基本计划,我想更改“第一次行动每周 3 次,第二次行动每周 5 次”。
我该如何设计?
软件设计和架构的一个问题是,最好的设计是在特定环境中解决(或避免)问题的设计。如果不了解上下文以及哪些力量作用于代码库及其维护者,就无法确定单个“最佳”解决方案。
但是,如果没有更多信息,我会接受 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
对象之一与每个用户相关联,并使用其限制值来检查每个受限操作。
更复杂的选择是可以想象的,但我不会推测,因为我不知道上下文。