按用户类型分隔功能的最佳方法

时间:2017-01-26 11:28:04

标签: architecture

如果您必须根据用户类型限制/修改功能,您如何设计软件的架构?例如,假设我们有3种用户类型:

  • 高级
  • 商业

我们正在实施图片上传API的功能。

现在棘手的部分是:

  • 免费用户可以上传10张图片。
  • 高级用户可以上传100张图片
  • 商业用户可以上传1000张图片。

嗯,我知道我可以对处理请求的方法执行'if',但由于还有许多其他类似的情况(依赖于用户类型的功能),我想找到一个更好的和更多这个问题的可扩展解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用多态,即具有针对每种情况以不同方式实现相同方法的不同子类。

例如,您可以拥有User类,其中包含子类FreeUserPremiumUserBusinessUser,当您调用User.UploadImage时,每个子类型都可以用户会有不同的限制。

基类将包含所有其他方法(类似情况)。