Javaでのinstanceの使い方

1990 ワード

オブジェクトのインスタンス化については直接newが一般的であるが,これ以外にも単一インスタンスモード,階層間呼び出しなどがある.
getInstanceの使用:*メイン関数の開始時に呼び出され、インスタンス化されたオブジェクトが返されます.このオブジェクトはstaticで、メモリには静的メソッドと変数を格納するための参照が保持されています.*直接使用して、同じオブジェクトを複数回呼び出すことができます.getInstanceとnewの違い;
ほとんどのクラスはnewを使用できます.newは、新しいインスタンスオブジェクトを生成したり、スタックにオブジェクトを宣言したりすることで、各セクションの呼び出し*は新しいオブジェクトを使用します.
getInstanceは、単一のインスタンスモード(クラスが1つしかないことを保証し、グローバルアクセスポイントを提供する)のクラスでよく見られ、一意のインスタンスを生成するために使用され、getInstanceはstaticであることが多い.
public abstract class TestInstance {
static int i = 1;
public static TestInstance getInstance() {
System.out.println(i++); return null;
} }
public class TestGetInstance {
public static void main(String[] args) {
TestInstance ins1 = TestInstance.getInstance(); TestInstance ins2 = TestInstance.getInstance();
}
}
インスタンスを使用して、定義された新しいクラスにgetInstance()メソッドを追加し、値を返すとそのクラスのオブジェクトになります.このメソッドはJavaの単例モードによく適用されます[java]view plain copy public class OAuthConstant {
public static synchronized OAuthConstant getInstance(){    
    if(instance == null)    
        instance = new OAuthConstant();    
    return instance;    
}    

}
//主関数にこのようなgetInstance()関数を使用すると、システムが現在インスタンス化されているクラスオブジェクトが得られ、現在のシステムがこのクラスのオブジェクトをインスタンス化していない場合は、このようなコンストラクション関数//オブジェクトを呼び出し、OAuthConstantに戻る.getInstance(); (1)オブジェクトが使用される前にgetInstanceによって得られ、自分で定義する必要がなく、使い終わった後にdeleteを必要としない.(2)newは必ず新しいオブジェクトを生成し、メモリを割り当てる.getInstance()は再作成する必要はありません.既存のリファレンスを使用することができます.これはnewよりも効率的です.(3)newが作成された後は2回しか使用できませんが、getInstance()はスタック領域にまたがって使用したり、リモート領域にまたがって使用したりすることができます.したがってgetInstance()は通常static静的インスタンスメソッドを作成します.(4)抽象クラスについてはgetInstance()メソッドしか使えずnewが出てこないので、
まとめ:getInstanceという方法は単例モードで多く使われていますが、メモリの無駄を避けるためにクラスをインスタンス化する必要があるときに実例化するのでgetInstanceでそのオブジェクトを取得します.他の場合は、簡単にするためです.プログラムをインスタンス化しないように、毎回newキーワードを使わないでください.いっそinstanceメソッドを提供し、このクラスを実行すると初期化する必要がなく、システムリソースを無駄にしないようにします.シングル・インスタンス・モードでは、データの競合を防止し、メモリ・スペースを節約できます.