gpt4 book ai didi

Java:公开 protected 方法的简单方法

转载 作者:行者123 更新时间:2023-11-29 08:06:40 30 4
gpt4 key购买 nike

我有一个类 (Capsule),它有很多 protected 方法 (30+)。这个想法是允许开发人员扩展此类并在类 (ImADev) 中使用 protected 方法,但将其留给开发人员将它们公开为公共(public)(按他们认为合适的方式覆盖方法)。

我现在有一个用例,我想将这些对象传递给一些实用程序类/方法并允许它们访问 protected 方法..除非它们受到保护,所以我的实用程序类/服务不能看到他们。

请看下面的例子:

// My Capsule class with protected methods
public abstract class Capsule {
public Capsule(..) { .. }
protected String getFoo() { return "foo"; }
}

// How a dev should use the class
public class ImADev extends Capsule {
public ImADev(..) { super(..); }
public String getBar() { this.getFoo() + "BAR");
}

// A special utility class
// Helper.helper() can accept any class derived from Capsule
public class Helper {
public String helper(Capsule c) {
return " im doing something awesome with " + c.getFoo();
// Except i cant do this, because c.getFoo() is protected.
}
}

解决这个问题的最佳方法是什么?请记住,我有很多 protected 方法。

最佳答案

要么您的类(class)做得太多,在这种情况下,将其分解为更小、定义更明确的类(class)

或者,实现您的实用程序类可以调用的安全公共(public)方法来包装您的 protected 方法

或者,只是将它们公开,因为听起来它们可能/应该是

或者,将类中的数据与行为(组合)分开,那么您的实用程序类只需处理更安全的公共(public) getter 方法,而不是可以更改内部结构的 protected 行为方法

在不了解您的应用程序及其用途的情况下,很难提供更好的答案

关于Java:公开 protected 方法的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746460/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com