17
オブジェクトの遅延割り当ては何を意味し、どのように役立ちますか?遅延割り当てとは何ですか?
オブジェクトの遅延割り当ては何を意味し、どのように役立ちますか?遅延割り当てとは何ですか?
遅延割り当ては、リソースが実際に必要になるまでリソースを割り当てないことを意味します。これはシングルトンオブジェクトでは一般的ですが、厳密に言えば、リソースができるだけ遅く割り当てられるときは、遅延割り当ての例があります。
リソースを実際に必要とするまでリソースの割り当てを遅らせることで、起動時間を短縮できます。また、実際にオブジェクトを使用することがない場合は、割り当てを完全になくすこともできます。これとは対照的に、後で必要とするリソースを事前に割り当てることができます。これにより、起動時間を犠牲にして後で実行するほうが効率的になります。また、後でプログラムの実行に失敗する可能性もありません。このコードはスレッドセーフではないことに注意してください
public class Widget {
private Widget singleton;
public static Widget get() {
if (singleton == null) {
singleton = new Widget();
}
return singleton;
}
private Widget() {
// ...
}
// ...
}
:
次のコードは遅延し、割り当てられたシングルトンの例を提供します。ほとんどの場合、get()
メソッドへのアクセスは、何らかの方法で同期する必要があります。
同様の(おそらくより一般的な)概念はlazy initializationです。
は、「late objects」と「lazy init」の同義語ですか?このテキストのタイトルのように* Javaのプログラミング方法:Late Objects Version *?私はグーグルではありますが、そのテキスト以外の参照は見つかりませんでした。 – hydeph
@hydephのように、Deitelには、最初の章が手続き型であり(後でクラス/オブジェクトを導入する)、「初期オブジェクト」を持つ「後期オブジェクト」という2つのバージョンがあり、クラス/オブジェクトすぐに導入されます。彼らは、これらの教授スタイルを区別するために、「遅いオブジェクト」と「初期のオブジェクト」を使用しています。遅延初期化との関係はありません。 –