1

学校では、Java でゲッターとセッターを使用するように教えられました。最近、私はそのようなことは悪いことであり、OOP ではないことを読んでいます。わかりましたので、コンストラクターを使用してデータを設定し、必要なデータを返すだけのコードを作成できます。

スレッドでゲッターを使用しない方法は? スレッドを実行すると、そのタイプは常に void であり、 java にはグローバル変数があります。. .. では、ゲッター メソッドを使用せずにスレッドからデータを取得するにはどうすればよいでしょうか。

4

3 に答える 3

2

最近、私はそのようなことは悪いことであり、OOP ではないことを読んでいます。

まったく逆に、getter と setter は OOP の基礎の 1 つです (このような副作用が望まれる場合)。

ただし、スレッドを開始する前にコンストラクター引数を渡すことはできます。

new Thread(new MyRunnableObject(args)).start();

ゲッターなしで結果を返したい場合はCallback、完了時などにスレッドが実行する を実装するのが最善です。

于 2011-02-25T18:33:56.567 に答える
1

ゲッターまたはセッター自体は、OO 設計としては悪くありません。

悪いのは、そのゲッター/セッターが必要かどうかに関係なく、すべての単一メンバーのゲッターとセッターを自動的に含むコーディングプラクティスです(パブリックであってはならないメンバーをパブリックにすることと相まって)-これは基本的にクラスの実装を外の世界に公開するためです情報の隠蔽/抽象化に違反する。これは IDE によって自動的に行われることもあります。

于 2011-02-25T18:36:00.753 に答える
0

最近、OOP じゃなくて、こういうのはダメだというのを読んだ。

ゲッターとセッターは本当にベスト プラクティスです。これらはプロパティ アクセス用のレイヤーを提供するため、クラス内のアクセサーの内部動作を変更する必要がある場合に単一の変更点が得られます。異なるアクセス戦略をカプセル化する必要がある場合は、子クラスでそれらをオーバーライドできます。

スレッドについて:

スレッドセーフ コレクションのようなものを使用する必要があります。スレッド間の通信用のクラスが存在すると思います。1 つのスレッドが書き込み、もう 1 つのスレッドが読み取るスレッドセーフ キューを使用します。そのための優れたライブラリがいくつかあるに違いありません。グローバルは本当に必要ありません。スレッド間で通信する必要がある両方のクラスに同じ参照を渡すだけです。パイプまたは TCP を介して通信することもできますが、それはプロセス間通信のためのものです。

于 2011-02-25T18:39:53.953 に答える