【发布时间】:2014-06-14 15:28:48
【问题描述】:
我正在开发一个使用 JavaFX 的项目,并且类通常有多达 800-1200 行。我们使用 fxml 来显示 Node 元素,但这些类仍然非常复杂。这就是我要问的具体内容:
一个类ReservationUI 包含子部分,它们现在被模块化为内部类。它又具有子部分。并且此类可以访问 ReservationUI 的字段。现在我喜欢将它们提取到自己的类中,但现在我需要访问父类。
class A{
int x; int y;
B b;
public A(){
b = new B();
b.display();
}
private class B{
private C c;
/* modify x */
}
private class C{
/* modify x and y */
}
}
当我现在提取它们时,我的依赖关系更糟:
class A {
int x; int y;
B b;
public A(){
b = new B(this);
b.display();
}
}
class B {
C c;
A a;
public B ( A parent ){
c = new C(this, parent);
a = parent;
/* call A.modifyX(c.get) */
}
class C{
A a;
B b;
public C( B parent , A root){
a = root;
b = parent;
}
}
我认为这里的模块化已经大错特错了。尤其是当我有这样的关系时:root -> child -> child -> child ...。
是否有解决此问题的设计模式。据我所知,有 Mediator 模式,但使用它,仍然没有带来太多,因为我仍然需要基本上做同样的事情。
【问题讨论】:
-
'Composite' 很好,不是吗?您还可以查看“装饰器”。这两个处理父子层次结构。
-
@Zhuinden 好吧,不。当父子行为相似时,复合很好。就我而言,我需要修改特定的父级。同样适用于装饰器。
标签: java design-patterns javafx