6

私は現在、2万行を超えるいくつかのクラスを持つかなり大規模なプロジェクトに取り組んでいます。これは、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コードでは目立たないため、後悔しないほど明確になります。

最終的には、状態保持を3番目のクラスに外部化し、手書きコードと生成コードの両方からその状態を使用するか、生成ギャップパターンを使用して、生成されたコードと統合する必要性によって生じる複雑さを管理することができます。

于 2012-06-04T12:27:40.113 に答える