Android App開発設計モデル第五編:単品モデル

3191 ワード

Singleton Pattern
名称の由来
JAvaはオブジェクト向けの言語で、androidもjava開発apでjava/C# 中のすべて
の物体(クラス)はすべて1つのオブジェクトと見なすことができて、このオブジェクトを使ってメモリの中で1つを割り当てる以外にありません
一般に最も直接的な方法はnewオブジェクトをメモリに存在させることです.
単品/例モードはすべての設計モードの中で最も簡単で最も分かりやすいプログラミング方式であり、ある特定のクラスのオブジェクトインスタンスが絶対に1つであることを保証したい場合、プログラム上でオブジェクトインスタンスが1つしかないことを表現したい場合、この方法を単品/例モードと呼ぶ.
Singletonとは、要素が1つしかない集合を指します.オブジェクトインスタンスが1つしかないため、名前が付けられます.
そのシンプルさから、ここではUMLを絵にしません.本編では、単品/例モードをテストするクラスと、単品モードと一般オブジェクトの区別に使用される一般クラスの2つのクラスについて説明します.
単品/例類Singleton
public class Singleton {
    private static  Singleton singleton=new Singleton();
 
    private Singleton(){ 
 
        System.out.println("     ");
    }
    public static  Singleton getInstance(){
        return singleton;
    }
}

このクラスはsingletonを静的フィールドとして定義し、Singletonクラスのオブジェクトインスタンスで初期化します.この初期化はSingletonクラスをロードするときにのみ行われます.
クラスのコンストラクション関数はプライベートであり,主に非Singletonクラスからコンストラクション関数を呼び出すことを禁止するためである.したがってnew Singleton()をそのまま使用するとコンパイルエラーが発生します.
単品/例モードの存在の必要は、オブジェクトが1つのインスタンスしか生成されないことを確保するためだけであり、符号化がこのモードに注意すれば一般的には存在する必要はないが、誰が保証できるだろうか.存在は合理的である.
normalクラスは空のクラスです
public class normal {
 
}

androidインタフェース入口試験単品/例モードSingletonPatternActivityクラス

public class SingletonPatternActivity extends Activity {
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        ((Button) findViewById(R.id.Button01))
                .setOnClickListener(new OnClickListener() {
 
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Singleton obj1=Singleton.getInstance();
                        Singleton obj2=Singleton.getInstance();
 
 
                        normal obj3=new normal();
                        normal obj4 =new normal();
                        if(obj1==obj2){
                            ((EditText) findViewById(R.id.EditText01)).setText("obj1 obj2       ");
                        }
                        else {
                            ((EditText) findViewById(R.id.EditText01)).setText("obj1 obj2        ");
                        }
 
                        if(obj3==obj4){
                            ((EditText) findViewById(R.id.EditText02)).setText("obj3 obj4       ");
                        }else {
                            ((EditText) findViewById(R.id.EditText02)).setText("obj3 obj4        ");
                        }
 
                    }
                });
 
    }
}

テスト結果
このモードはandroidアプリケーションを書くときによく使われますが、アプリケーションがApplicationを使うことが多い場合は、詳細なコードはjamendoオープンソースプレーヤーを参照することができ、中にはApplicationで単品/例モードを使うことがあります.