确保只有A类可以调用B类

时间:2013-11-17 08:04:24

标签: java oop object design-patterns

我有两个课程AB

我如何确保我的软件中没有其他地方(除了A类)被B级称为或被引用?

我想在B内写一课A,但我并不特别喜欢。

我可以这样做:检查谁调用了B类的方法,如果它不是A类,那么忽略它?

3 个答案:

答案 0 :(得分:4)

限制访问的唯一方法是通过某种访问修饰符。

public class A {
    private static class B {
    }
}

但是你说你不想要嵌套或内部类。

另一种方法是为这两个类创建一个单独的包,并使B仅对包可见。 (这是否可以接受取决于您的具体情况。)

<强> A.java

package ab;

public class A {
}

<强> B.java

package ab;

class B {
}

此处,B具有默认值(有时也称为“包私有”或“包受保护”)可见性。它的可见性仅限于包装内。

答案 1 :(得分:0)

你可以在B类中编写你想要的方法,然后在A类中编写一个方法,将B类的实例作为一个argumment,并在参数上调用第二个方法。

但这非常难看。

答案 2 :(得分:0)

如果要限制对特定客户端的访问,则应将B类编写为内部类(您不喜欢的方式)。

实际上,如果它不作为一个独立的功能模块存在,我将避免编写一个类,这是由许多其他模块调用的。其中唯一的一点是语义上组织数据方案。

我希望我帮忙!