6

我目前正在处理一个相当庞大的项目,其中包含多个超过 20,000 行的类。这是因为将所有生成的 UI 摆动代码与所有功能代码混合在一起是一个聪明的主意。我想知道是否会在内存或运行时间方面产生任何额外成本,将大多数非 UI 相关功能移动到单独的类中。举个例子,这与我正在构建的内容类似。

public class Class1{
    private Class1Util c1u;
    List<String> infoItems;
    ...
    public void Class1(){
        c1u = new Class1Util(this);
    }
    public void btnAction(ActionListener al){
        ...
        c1u.loadInfoFromDatabase();
    }
}

public class Class1Util{
    private Class1 c;

    public void Class1Util(Class1 c){
        this.c = c;
    }
    public void loadInfoFromDatabase(){
        c.infoItems.add("blah");
    }
}

最后,我还想移动一些像 infoItems 这样的字段,这将导致反向关系,Class1 访问 c1u.infoItems。

4

2 回答 2

6

不,关注点分离是一种很好的面向对象设计实践。它不会在性能方面花费您任何有意义的成本,并且会在维护、可扩展性等方面为您带来很多好处。

于 2012-06-04T12:25:29.890 回答
2

您可能会因为额外的取消引用级别而对性能造成很小的影响,但它在 UI 代码中并不明显,并且您将获得如此多的额外清晰度作为回报,您不会后悔。

最终,您可能希望将状态保持外部化到第三类,然后从您的手写代码和生成的代码中使用该状态,或者使用代沟模式来管理由于需要与生成的代码集成而引入的复杂性。

于 2012-06-04T12:27:40.113 回答