如何为不同类型的用户设计API?

时间:2014-03-09 20:28:59

标签: c# java c api api-design

我正在为我的产品设计一个新的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个二进制文件。有可能吗?

1 个答案:

答案 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"; }
}