JAVAモードの一例モード

11531 ワード

設計モード-単一モード
設計モード-単例モード一、餓漢モード二、怠け者モード
設計モードは繰り返し使用され、多くの人が知っている、分類編目された、コード設計経験の総括である.コードの再利用性を向上させ、コードをより理解しやすくし、コードの信頼性を保証することを目的としている.
単例モードはいつ使用しますか?プロファイル、ツールクラス、スレッドプール、キャッシュ、ログオブジェクトなど、1つしか必要としないオブジェクトもあります.複数のインスタンスを作成しすぎると、リソースが多すぎたり、一致しない結果が出たりするなど、多くの問題が発生します.
よく使われる単例モードは、怠け者モードと空腹汗モードです.
一、餓漢モード
餓漢モード:自分でオブジェクトを作成していないときは、作成してくれて、そのまま使えばいいです.
public class Singleton2 {

    //1.        ,           
    private Singleton2(){
    }

    //2.        ,  private staitc
    private static Singleton2 singleton = new Singleton2();

    //3.           ,  public static
    public static Singleton2 getInstance(){
        return singleton;
    }
}

餓漢モード取得インスタンスオブジェクトテスト

public class SingletonTest extends TestCase {

    public static void main(String[] args){
        //    
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        if(s1==s2){
            System.out.printf("s1 s2     ");
        }else {
            System.out.printf("s1 s2       ");
        }
     }
}

結果:s 1とs 2は同じ例です
二、怠け者モード
怠け者モード:必要なときにクラスにあるかどうか、ない場合は作成し、ある場合は直接使用します.

public class Singleton {

    //1.        ,           
    private Singleton(){
    }

    //2.        ,  private staitc
    private static Singleton singleton;

    //3.           ,  public static
    public static  Singleton getInstance(){
        if(singleton == null){
            singleton = new Singleton();
        }
        return singleton;
    }
}

怠け者モードインスタンスオブジェクトテストの取得

public class SingletonTest extends TestCase {

    public static void main(String[] args){
        //    
        Singleton s3 = Singleton.getInstance();
        Singleton s4 = Singleton.getInstance();
        if(s3==s4){
            System.out.printf("s3 s4     ");
        }else {
            System.out.printf("s3 s4       ");
        }
     }
}

結果:s 3とs 4は同じ例です
まとめ:餓漢モード:自分でオブジェクトを作成していないときは、作成してくれて、そのまま使えばいいです.怠け者モード:必要なときにクラスにあるかどうか、ない場合は作成し、ある場合は直接使用します.