【问题标题】:Java class design issueJava类设计问题
【发布时间】:2013-01-25 16:33:22
【问题描述】:

这是一个类设计:http://pastebin.com/1RSdmtXi

如果我只将 A 放入类 Expect,我希望只看到 A 的 getter 和 setter,或者对 B 的 vica vera。如果放入 A 和 B,那么所有的 getter 和 setter 都应该是可见的.

因此仅作为A的示例:

A[] aExampe = {new A("Tim",1)};
Expect exp = new Expect(aExampe);

exp.getA(); --> visible
exp.getB(); --> not visible

您可以为此建议另一种设计。

【问题讨论】:

  • 肯定是这个问题 - 不良架构的后果

标签: java class methods visibility


【解决方案1】:

试试这个:

 Expect.class.getMethod("getA", null).setAccessible(true);
 Expect.class.getMethod("getB", null).setAccessible(false);

但我建议你改变你的架构。

【讨论】:

    【解决方案2】:

    为什么需要这个?

    如果您更改类 Expect(通过添加删除字段),您也可以添加和删除 getter 和 setter。

    如果你想改变类而不修改和重新编译客户端类,定义一个包含所有需要的方法的接口,通过Expect类实现它,而不是删除方法,只需将它们设为空方法(没有任何主体) .

    通过这种模式,您将不会使用编译时检查,也不需要对正常的方法调用使用脏反射。

    【讨论】:

      【解决方案3】:

      在 Expect 类中,您应该只有 getA()、setA、getB 和 setB,而不是 A 和 B 属性的所有 getter 和 setter。那些属于那些类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多