我正在为我的应用程序构建一个API,作为模型和控制器之间的中间层。 该模型包含所有数据和低级功能。我已经为API创建了一个新类,它使用了模型,但使用户更容易,并且不允许用户直接访问数据。
现在,我想阻止用户访问模型,让他只使用API中的函数。
我该怎么做?
据我所知,这可以通过指定方法或变量是private
还是public
来完成。问题是我有很多static
个字段用于全局数据。我是否可以限制对静态字段的访问,以便只有API的私有函数才能访问它们?
答案 0 :(得分:1)
在类中创建private static
字段将确保该类中的ONLY函数可以访问这些字段。此外,如果重新实例化该类(又名new myClass();
),则不会重新创建这些字段;它们的值将保持完整并且对于myClass的所有实例都是全局的。
答案 1 :(得分:0)
除了已经发布的答案:
这取决于“限制对静态字段的访问”的含义:
如果您想阻止他人无意中直接使用它们,请使用“私人”修改器。 但请记住,如果没有其他措施可以通过反射,人们仍然可以通过反射访问它们。
对于“static int foo”情况也是如此,如果你不密封包,因为人们可以很容易地将另一个类放入同一个包中,这个包将再次访问。
答案 2 :(得分:0)
如果您正在构建API,可能需要阅读本书Practical API Design, Confessions of a Java Framework Architect。
方法优于字段最好使用方法(通常是getter和setter)来访问字段,而不是直接公开它们。
工厂优于构造函数当您公开工厂方法而不是构造函数时,可以促进API的未来发展。
让一切变得最终为了未来的发展,最好不要让子类化...让你的课程最终成功。
...