私はそこにいます
私はこのシナリオを持っています:
public class A{
//attributes and methods
}
public class B{
//attributes and methods
}
public class C{
private B b;
//other attributes and methods
}
public class D{
private C c1, c2, c3;
private List<A> a;
//other attributes and methods
}
すべてのクラスには独自のファイルがあります。ただし、クラスA、B、およびCは、プログラム全体では使用しておらず、プログラムのごく一部で使用しているため、クラスDの内部クラスとして取得したいと思います。それらをどのように実装する必要がありますか?私はそれについて読みましたが、私はまだ最良の選択肢が何であるかについて確信がありません:
オプション1、静的クラスの使用:
public class D{
static class A{
//attributes and methods
}
static class B{
//attributes and methods
}
static class C{
private B b;
//other attributes and methods
}
private C c1, c2, c3;
private List<A> a;
//other attributes and methods
}
オプション2、インターフェースとそれを実装するクラスを使用します。
public interface D{
class A{
//attributes and methods
}
class B{
//attributes and methods
}
class C{
private B b;
//other attributes and methods
}
}
public class Dimpl implements D{
private C c1, c2, c3;
private List<A> a;
//other attributes and methods
}
元のシナリオを使用して同じ動作を実現するには、どちらのアプローチが優れているかを知りたいです。オプション1を使用して、このようなクラスを使用しても大丈夫ですか?
public method(){
List<D.A> list_A = new ArrayList<D.A>();
D.B obj_B = new D.B();
D.C obj_C1 = new D.C(obj_B);
D.C obj_C2 = new D.C(obj_B);
D.C obj_C3 = new D.C(obj_B);
D obj_D = new D(obj_C1, obj_C2, obj_C3, list_A);
}
基本的に、私の懸念は、内部クラスの作成が外部クラスにどのように影響するかです。元のシナリオでは、最初にクラスA、B、Cのインスタンスを作成し、次にクラスDのインスタンスを作成します。前述のオプションで同じことを実行できますか?