0

我正在为我的应用程序构建一个 API,作为模型和控制器之间的中间层。该模型包含所有数据和低级功能。我为 API 创建了一个新类,它使用该模型,但使用户更容易,并且不允许用户直接访问数据。

现在,我想阻止用户访问模型并让他只使用 API 中的函数。

我怎么做?

据我所知,这可以通过指定方法或变量是privateor来简单地完成public。问题是我有很多static全局数据字段。我可以限制对静态字段的访问,以便只有 API 的私有函数可以访问它们吗?

4

3 回答 3

1

在类中创建private static字段将确保只有该类中的函数才能访问这些字段。此外,如果类被重新实例化(又名new myClass();),这些字段将不会被重新创建;对于 myClass 的所有实例,它们的值将保持不变并且是全局的。

于 2013-06-11T18:22:24.567 回答
0

除了已经发布的答案:

这取决于“限制对静态字段的访问”的含义:

如果你想防止其他人不经意间直接使用它们,请使用“private”修饰符。但是请记住,如果没有其他对策已经到位,人们仍然可以通过反射访问它们。

如果您不密封包,这也适用于“静态 int foo”情况,因为人们可以轻松地将另一个类放入将再次访问的同一包中。

于 2013-06-11T19:01:27.280 回答
0

如果您正在构建 API,也许您想阅读Practical API Design, Confessions of a Java Framework Architect 一书。

方法比字段好 使用方法(通常是 getter 和 setter)来访问字段比直接公开字段要好。

工厂优于构造器 当您公开工厂方法而不是构造器时,您可以促进 API 的未来发展。

Make Everything Final为了未来的发展,最好禁止子类化……让你的类最终化。

...

于 2013-06-11T19:41:44.093 回答