いくつかの方法があります(以下でそれぞれ説明します)。
- パラメーターを 1 つずつ渡す
- フレーム全体を渡す
- インターフェイスを抽出し、それを渡します
広告 1. これは最も簡単な方法です。次のようなコンストラクターを使用するだけです。
public B(int one, String two) {
...
}
すでに述べたように、パラメーターの数が多いと面倒です。
広告 2. これは良い考えではありません。パネルは本当にフレームのすべてのプロパティにアクセスする必要がありますか? いいえ、そうではありません。たとえば、次のことができます。
public B(MyFrame a) {
...
a.setVisible(false);
}
これは絶対に望ましくありません。さらに、循環参照の問題は、単独で変更を行うことができないことです。フレームを変更すると、パネルが変更される可能性があり、その逆も同様です。
広告 3. これは私の好みのアプローチです。必要な機能を正確に提供するインターフェイスを作成します。
public interface MyInterface {
public int getOne();
public String getTwo();
}
次に、クラスA
にそのインターフェイスを実装させます。
public class A implements MyInterface {
...
public int getOne() {
return one;
}
public String getTwo() {
return two;
}
}
B
のコンストラクターをに変更することを知っています
public B(MyInterface a) {
// use a.getOne() and a.getTwo() to get your data
}
そして、あなたはまだB
から作成A
することができます
B b = new B(this);
主な利点は次の 3 つです。
- 必要なすべてのデータを含むパラメーターを 1 つだけ渡す必要があります
A
必要以上のクラスを公開しない
- クラスはクラス
B
に明示的に依存していませんA
(インターフェイスのみMyInterface
)