我正在为我的产品设计一个新的API。
代码用C,C#和Java编写,我的目标是为不同类型的用户创建一个具有不同控制级别的API。
以下是包含所有控制级别的API的示例:
class MyAPI
{
// This method shoudl be available for all users
public int level_1_function(int x, int y) {return 0;}
// This method should be available for users of level 2 and above
public int level_2_function(String s, int x) { return 0; }
// This metho should be available for users of level 3 and above
public String level_3_function(String s, int y) { return "Result"; }
}
最简单的方法是使用预处理器指令#ifdef LEVEL_1
并编译代码3次,每次使用不同的预处理器指令。这将为不同类型的用户生成3个不同的二进制文件。
我想避免创建3个二进制文件。有可能吗?
答案 0 :(得分:0)
class MyUser
{
int level = 0;
setUserLevel(int newLevel) {
level = newLevel
}
}
class MyAPI
{
// This method shoudl be available for all users
public int level_1_function(int x, int y) { return 0;}
// This method should be available for users of level 2 and above
public int level_2_function(String s, int x) { if (level < 2) return -1; else return 0; }
// This metho should be available for users of level 3 and above
public String level_3_function(String s, int y) { if (level < 3) return "Invalid access" else return "Result"; }
}