java在不传递到构造函数的情况下,将一个类的实例使用到另一个类中的最佳方法是什么
如果两个类处于同一级别(都是子类),如何将一个类的实例使用到另一个类中。在不传递到构造函数的情况下,将一个类的实例使用到另一个类中的最佳方法是什么因此需要手动传递null。如何制作独立代码
Class PreviewPanel{
private PreviewPanel(Builder builder) {
this.previewMode=builder.previewMode;
formsPreview=new NTFormsPreview(previewMode);
formsPreview.setCanAddComment(builder.canAddComment);
ntPreviewTreePanel=new NTPreviewTreePanel(builder,formsPreview);
//This class have some event bus implemented.Sometime There, formsPreview instance is require.
}
public static class Builder {
private PreviewMode previewMode;
private Document document;
public Builder(PreviewMode previewMode,Document document) {
this.previewMode = previewMode;
this.document=document;
}
public PreviewPanel build() {
return new PreviewPanel(this);
}
}
}
若我将该实例传递给构造函数,我必须遵循内部类的链,并传递相同的实例以到达特定的类。我想避免它。这是个大产品。要显示其中有多少类才能达到实际的处理程序实现并不容易
代码结构:
private PreviewPanel(Builder builder)
->formsPreview=new NTFormsPreview(previewMode);
->NTPreviewTreePanel(builder,formsPreview);
->NTPreviewTree(document, bidDocuments, previewMode, canAddComment,canViewComment, previewFormTxnEncryptionDetails,formsPreview);
->NTTreeNode(formsPreview)
private void fireReportItemClicked(Document document,esenderCSReport){
eventBus.fireEventFromSource(formPreviewEvent, formsPreview);
}
# 1 楼答案
我不清楚您的问题,但我认为您可以做到以下几点:
创建一个新类,该类将“同时拥有您的两个子类-组合”
让它成为一个中介模式,这样一个人就可以按照你想要的规则/逻辑在另一个人身上使用和调用东西
仅供参考,构建者,似乎与构建者模式有关,你可能想阅读一下,看看你是否能从你的项目中理解一些东西
# 2 楼答案
还有其他方法
setter
方法将第二个类的实例传递给第一个类李>如果你的答案与你的例子更相关,你需要更清楚地解释你在这里试图做什么,以及为什么你认为你目前的解决方案不令人满意
关于这一解释:
我不知道你想说什么。我怀疑其他读者也有同样的问题
我怀疑这里真正的问题在于现有代码的设计。看起来你/某人对嵌套类有点疯狂,你正在承受后果。这可能是简化事情的唯一方法是取消嵌套或重新考虑构造函数。(为什么私有构造函数需要“builder”参数?)
对于复杂的OO软件来说,具有内在复杂的初始化模式是一种相当普遍的现象。通常没有简单的编程方法来处理这个问题,但是您通常可以通过使用某种“依赖注入”(DI)机制来避免这个问题。另一个名称是“控制反转”(IoC)
例如,SpringDI的工作方式是向类中添加注释,并让Spring以所需的形式创建和组装实例。或者,您可以指定如何在XML中组装实例(bean)
这可能是你的解决方案