JAvaでの単一設計モードの使用

1788 ワード

目的:
開発プログラミングの過程で、自分のコードの品質をもっと良くして、他の人に理解されやすくて、拡張性がもっと強くて、結合性がもっと低くて、メンテナンスしやすいように、私たちはいくつかの設計モードを使う必要があります.以下では、よく使われる設計モードを簡単に紹介します:単例設計モード.
単一モードの使用方法の説明:
一例として、その名の通り、一つだけあって、二つ目があってはいけない.世界に同じ木の葉が二つもあってはいけないようだ.ここでは、クラスにはインスタンスが1つしかなく、プログラム全体がインスタンスにアクセスできることを意味します.
  • は、ユーザがこのクラスのオブジェクトを作成することを許さず、クラスの構築方法を私有化する必要がある
  • .
  • は、オブジェクトを作成する方法
  • を自分のクラスに提供する必要がある.
    設計モードの分類と使用例:
    1.餓漢式:インスタンスはクラスマウント時に作成され、つまりプログラムが実行されると作成される
    使用方法:
    1.私有化構造方法2.静的メンバー変数を定義し、この単一オブジェクトを記録します.
    クラスPokerを定義し、メソッドtest()を提供します.
    class Poker{
        //2.                    
        //   
        public static final Poker shared = new Poker();
        //1.      
        private Poker(){}
        public void test(){
        }
    }
    

    2.怠け者:インスタンスは最初の使用時に作成されます.
    使用方法:
    1.私有化構造方法2.静的メンバー変数を定義し、この単一オブジェクト3を記録する.外部へのアクセス方法を提供します.
    クラスPlayerを定義し、外部へのアクセス方法getInstance()を提供します.
    class Player{
        public int count;
    
        //2.      
        private static Player shared = new Player();
        //1.       
        private Player(){}
        //3.            
        //   
        public static Player getInstance(){
            Object b = new Object();
            synchronized (b){
                if (shared == null){
                    //              
                    shared = new Player();
                }
            }
            return shared;
        }
    }
    

    外部アクセスの一例オブジェクト
    単一の設計モードを使用しない場合と比較して、通常はオブジェクトを作成します.
    Poker p = new Poker(); p.test();
    単一の設計モードを使用すると、構造方法がプライベート化され、getInstance()メソッドをオブジェクトで呼び出すことができないため、クラスメソッドとして定義するしかなく、staticで修飾されています.
    外部アクセス
    Poker.shared.test();
    

    外部アクセスPlayerの単一オブジェクト
    Player.getInstance().count += 1;
    
    Player pl = Player.getInstance();
    pl.count += 1;
    
    System.out.println(pl.count);