クラス構造にいつでもキーワード新しいコンストラクタと呼ばれ、新しいオブジェクトをインスタンスが、設計において、また民営化コンストラクタの形式で制御オブジェクトのインスタンスによって達成することができるであろう。
10.3.1シングルトンデザインパターン
シングルトンデザインパターンはそれほど新しいキーワードを使用して、クラス外部新しいクラスをインスタンス化することができない、オブジェクトのインスタンスが1つだけプライベートコンストラクタによってカプセル化することができ、この要件を達成するために提供されることができ、システム全体のクラスを指し本発明の方法の使用を容易にするためにオブジェクト・クラス。グローバルインスタンスは、オブジェクト内部のユーザーのために提供されてもよいです。
例:シングルトンデザインパターン
package com.lxh.tenchapter;
public class SingIeton {
//在类内部进行Singleton对象实例化,为了防止可能出现重复实例化所以使用final标记
private static final SingIeton INSTANCE=new SingIeton();
private SingIeton(){} //构造方法私有化,外部无法通过关键字new实例化
/**
* 获取本类实例化对象方法,static方法可以不受实例化对象的限制进行调用
* @return INSTANCE内部实例化对象,不管调用多好次此方法都只返回同一个实例化对象
*/
public static SingIeton getInstance() {
return INSTANCE;
}
public void print() {
System.out.println("520");
}
}
package com.lxh.tenchapter;
public class Java232 {
//在外部不管有多少个SingIeton类对象,实质上最终都只调用唯一的一个SingIeton类实例
public static void main(String[] args) {
SingIeton inst=SingIeton.getInstance();
inst.print();
}
}
実行結果520
SingIetonがパッケージプライベート民営化されたこのプログラムは、クラスのコンストラクタ、キー外のことで、この意志インスタンス化しない新しいクラスオブジェクトのでクラス。クラスオブジェクトの使用を容易にするためにSingIeton、クラス内の静的クラスのインスタンスを取得するために、本発明の方法を使用して、直接メソッド呼び出しを実装するために関連して、このクラスのメンバー属性INSTANCとして共通オブジェクトを提供します。
シングルトンデザインパターンは、2つのタイプに分けられる:飢え単一の実施形態と怠惰な単一デザインケースデザイン。
単一の設計を飢え例:クラスのオブジェクトのインスタンスは、メンバーシップのプロセスを定義する属性のとき直接実行しました。
例怠惰な単一の設計:最初は、オブジェクトがクラスをインスタンス化されるときに使用されます。
例:怠惰なシングルデザインパターンの定義
package cn.mldn.demo;
class Singleton { // 单例程序类
// 定义公共的instance属性,由于需要在第一次使用时实例化,所以无法通过关键字final定义
private static Singleton instance; / 声明本类对象
private Singleton() {}// 构造方法私有化,外部无法通过关键字new实例化
/**
* 获取本类实例化对象方法,static方法可以不受实例化对象的限制进行调用
* @return 返回唯一的一个Singleton类的实例化对象
*/
public static Singleton getInstance() {
if (instance == null) { // 第一次使用时对象未实例化
instance = new Singleton() ; // 实例化对象
}
return instance ; // 返回实例化对象
}
public void print() {// 信息输出
System.out.println("www.mldn.cn");
}
}
public class JavaDemo {
public static void main(String args[]) {
// 在外部不管有多少个Singleton类对象,实质上最终都只调用唯一的一个Singleton类实例
Singleton instance = null; // 声明对象
instance = Singleton.getInstance(); // 获取实例化对象
instance.print(); // 通过实例化对象调用方法
}
}
この手順は、唯一のメンバーのインスタンスのプロパティの内部SingIetonクラス定義オブジェクトのインスタンスで実行されていない、その場合、プログラムの開始リソースを節約することができるように、オブジェクトのインスタンス動作の第1のgetInstance()メソッドを呼び出します。
10.3.2マルチデザインパターン
オブジェクトインスタンス7のこのクラスのオブジェクト、週動作を表現シングルトンデザインパターンは、インスタンス化オブジェクトクラスを残し、マルチデザインパターンは、このようなクラスを定義するように、複数のオブジェクトを定義し、性別の定義を表します。オブジェクトのインスタンスを作成するためにユーザによる制限のため、限られた数を使用しなければならないためではない、これは、複数の設計パターンに属するそのような類似のクラス、オブジェクト・クラスの2つのインスタンスがあります。
例:マルチデザインパターン
package com.lxh.tenchapter;
public class Color { //多例设计模式
private static final Color RED=new Color("红色");
private static final Color GREEN=new Color("绿色");
private static final Color BLUE=new Color("蓝色");
private String title;
private Color(String title) {
this.title=title;
}
public static Color getInfo(String c) {
switch(c) {
case "red":
return RED;
case "green":
return GREEN;
case "blue":
return BLUE;
default:
return null;
}
}
@Override
public String toString() {
return "Color [title=" + title + "]";
}
}
package com.lxh.tenchapter;
public class java234 {
public static void main(String[] args) {
Color c=Color.getInfo("green");
System.out.println(c);
}
}
結果:カラー[=緑色表題]
なぜならオブジェクトのインスタンスの数を制御する必要性は、本プログラムでは、コンストラクタ定義がGETINFOにより、外部クラスの使用を容易にするために、内部オブジェクトの3つの例を提供する民営化され、生成されます()は、オブジェクトインスタンスのメソッドオブジェクトフラグを取得します。