如何向世界其他地方隐藏 Java API 的内部结构 [英] How to hide the internal structure of a Java API to the rest of the world

查看:22
本文介绍了如何向世界其他地方隐藏 Java API 的内部结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个 Java Api 来做事(秘密,呃;).

i am developing a Java Api to do things (secret, uhhhh ;).

有没有办法隐藏类和我的 API 的内部结构?

Is there a way to hide classes, and the internal structure of my API?

  • 使用内部类(丑陋的方式,我不想把所有内容都放在类文件中)
  • 一个包中的所有类,以便我可以使用包"-可见性(也很丑,我需要更多包)
---
package net.my.app;
//this is the Public Access
class MyPublicClass{
    public void somePublicFunction(){ 
        //access to not visibil classes
    }
}

---
package net.my.app.notvisible:
//this is what i want to hide
class MyNOTPublicClass{
    ...
}
---

有什么想法吗?谢谢!

推荐答案

  • 使用接口来定义你的应用程序可以
  • 创建访问服务的主入口点,仅返回接口
  • 我不会为真正隐藏实现类而烦恼.您永远无法真正将它们隐藏在 Java 中,那些对技术感兴趣的人可能会使用调试器启动您的应用程序.不提供公共构造函数,例如
  • 关于此评论:

    肖恩,你能不能详细一点更多关于你的答案?...

    Sean, would you elaborate a little more on your answer? ...

    实现我的第二个要点的一种方法是使用服务查找类,例如

    One way to implement my second bullet point I mean using a Service Lookup class, e.g.

    public class Lookup {
        private static final Foo foo = new FooImpl();
        public static Foo getFoo() { 
            return foo; 
        }
    }
    

    Foo 是一个接口,FooImpl 是一个实现类(如果你想强制它不能被客户端实例化,它可以是包私有的)

    Foo is an interface, FooImpl an implementation class (which can be package private if you want to enforce that it can't be instantiated by clients)

    这篇关于如何向世界其他地方隐藏 Java API 的内部结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆