JAva単例モード説明
1818 ワード
私の最初のブログということになりますが、これまでも欲しいと思っていましたが、書きたい段階に止まっていました.今日は、印象を深めるためのブログを書くことにしました.個人的な技術を高めるためにも、プログラマーの道を宣言する正式な始まりでもあります.他の人を助けることができれば、もっといいです.くだらないことは言わないで、始めましょう.
単例モードは、その名の通り、栗を挙げると、栗が1つしか食べられないという冗談です.
次は本題に入ります(もう始まったようですが、皆さんは見ていないふりをしています)
単一設計モードとは、Singletonモードを使用しているクラスの場合、クラスが作成されると、外部からアクセスするためにインスタンスオブジェクトが1つしか生成されず、グローバルなアクセスポイントが提供される作成モードです.
コアポイントは次のとおりです.
1. 単一の設計モードを採用したクラスの構造方法をプライベート化(privateで修飾)し、他のクラスの直接アクセスを許可しません.
2. クラスのインスタンス化オブジェクトを内部で生成し、private staticタイプにカプセル化します.
3. 静的メソッドを定義してクラスのインスタンスを返します.
欠点:
このクラスがロードされるとstatic testが初期化され、静的変数が作成され、メモリ領域が割り当てられます.その後、このstaticのtestはメモリを一致して占有します.このインスタンスを使用しなくても、zhiはクラスがアンインストールされて破棄されると、静的変数が破壊され、すべてのメモリが解放されるため、特定の条件でメモリが消費されます.
欠点:実際の実行では複数のtestのインスタンスが発生する可能性があります.
単例モードは、その名の通り、栗を挙げると、栗が1つしか食べられないという冗談です.
次は本題に入ります(もう始まったようですが、皆さんは見ていないふりをしています)
単一設計モードとは、Singletonモードを使用しているクラスの場合、クラスが作成されると、外部からアクセスするためにインスタンスオブジェクトが1つしか生成されず、グローバルなアクセスポイントが提供される作成モードです.
コアポイントは次のとおりです.
1. 単一の設計モードを採用したクラスの構造方法をプライベート化(privateで修飾)し、他のクラスの直接アクセスを許可しません.
2. クラスのインスタンス化オブジェクトを内部で生成し、private staticタイプにカプセル化します.
3. 静的メソッドを定義してクラスのインスタンスを返します.
/**
*
* : ,
*/
public class Test {
//
private Test() {
}
// , Static final
private static final Test test = new Test();
//
public static Test getInstance(){
return test;
}
}
の利点:書くのが簡単で、マルチスレッド同期の問題がなく、synchorizedによるパフォーマンス最適化の問題を回避します.欠点:
このクラスがロードされるとstatic testが初期化され、静的変数が作成され、メモリ領域が割り当てられます.その後、このstaticのtestはメモリを一致して占有します.このインスタンスを使用しなくても、zhiはクラスがアンインストールされて破棄されると、静的変数が破壊され、すべてのメモリが解放されるため、特定の条件でメモリが消費されます.
public class Test {
//
// ,
// , new Test 。
private Test() {
}
// Test ( , )
private static Test test;
// ( , , )
public static Test getInstance(){
if(test == null){
test = new Test();
}
return test;
}
}
利点:Testがロードされるとtestにスペースが割り当てられず、空であるためgetInstanceが実行される場合にのみtestが作成される.欠点:実際の実行では複数のtestのインスタンスが発生する可能性があります.