Java 设计用于管理应用程序中的服务付费订阅?

Java 设计用于管理应用程序中的服务付费订阅?,java,oop,model-view-controller,Java,Oop,Model View Controller,假设我有一个假设的付费应用程序,比如stackoverflow。应用程序允许用户做两件事: 发问 张贴答案 此应用程序收取20美元购买一个计划,该计划允许发布10个问题和10个答案 从技术上讲,这两个动作都是通过完全不同的接口公开的 interface Questions { postQuestion(String question); } interface Answers { postAnswer(int questionId, String answer); } 这两个

假设我有一个假设的付费应用程序,比如stackoverflow。应用程序允许用户做两件事:

发问 张贴答案 此应用程序收取20美元购买一个计划,该计划允许发布10个问题和10个答案

从技术上讲,这两个动作都是通过完全不同的接口公开的

interface Questions {
    postQuestion(String question);
}

interface Answers {
   postAnswer(int questionId, String answer); 
}
这两个服务都可以通过不同的控制器通过web访问。我需要跟踪用户发布了多少问题和答案,以便在达到限制时,我可以要求他们进行新的购买,而无需将此任务委托给服务部门

例如,在Java中,我需要类似于map的map,它跟踪每个允许的方法被成功调用的次数。并且,通过拦截对这些服务的调用来维护此映射。此映射还需要数据库存储


谢谢

在客户数据库中,您可以添加回答计数器和提问计数器

当客户注册时,将这些值设置为10

每次调用服务时,首先检查是否允许客户调用该服务,根据请求检查answerCounter或questionCounter是否高于0

如果允许客户发布答案/问题,则将回答计数器或提问计数器的值减少1


如果客户支付了一个新包,则将这些值增加或增加到10。

谢谢,这要求每个服务检查其方法是否可以调用。由于有许多不同的服务,很难让每个服务自己进行检查。由于这也是一种“交叉”关注点,我希望以某种方式拦截调用,我可以配置需要拦截的方法。这有意义吗?如果有很多调用,那么可以为每个计数器创建2个concurrentHashMap。当客户连接时,加载地图中的当前值。当他的会话结束时,将值保存在数据库中。在客户旅程中,不会使用DB,只使用您的地图。