gpt4 book ai didi

java - 最终静态属性更改..有什么想法或方法吗?

转载 作者:行者123 更新时间:2023-12-01 13:41:41 24 4
gpt4 key购买 nike

我必须维护一段代码,以便为类中的最终静态变量添加更多灵 active 。

该变量不再是全局常量并且可以更改。

问题在于该类位于公共(public)库中并在不同的项目中使用。

您是否有比将公共(public)库中的类代码复制并粘贴到我的特定应用程序并重构它更好的方法或设计模式?

示例:

共享项目

Class CommonClass {

public final static var globalSomething = somethingGlobal;

public static method(){ //CommonClass.globalSomething is used here}
}

在我的应用程序(以及引用公共(public)资源的其他应用程序)中,我们可以使用静态属性并调用该方法:

---> var b = CommonClass.somethingGlobal;

---> var c = CommonClass.method()//我们知道这里使用了CommonClass.globalSomething

期望:

  • 能够在我的应用中更改 CommonClass.somethingGlobal 并在调用 CommonClass.method() 中进行这些更改
  • 我可以在公共(public)类中修改(添加方法),但我必须保持相同的初始行为(不要破坏引用公共(public)项目的其他项目)

最佳答案

如果我没理解错的话,您希望将其作为参数来实现。

看看你的例子:

var c = CommonClass.method() //we know that CommonClass.globalSomething is used here

已经有问题了。在调用该方法之前,您不必知道必须正确设置 CommonClass.somethingGlobal。这样客户端就必须知道其实现,违反了信息隐藏的原则。如果需要该值,请将其作为参数引入:

Class CommonClass {

public static void method(var globalSomething){}
}

另一种方法是将变量和方法设置为非静态并使用构造函数:

Class CommonClass {

public var globalSomething = somethingGlobal;

public CommonClass(var globalSomething) {
this.globalSomething = globalSomething;
}

public void method(){}
}

PS:您的示例代码不是java。我在回答中部分纠正了它。

关于java - 最终静态属性更改..有什么想法或方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701070/

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