Newer
Older
DesignPatternForSoftwareEng / SingletonTest.java
@motoki miura motoki miura 13 hours ago 1 KB init
import java.util.Calendar;
import java.util.Date;

public class SingletonTest {

	public static void main(String[] args) throws InterruptedException {
        // staticメソッドで「設定」を作成
		MySetting ms = MySetting.getInstance();
		int object_id = ms.hashCode(); // hashCode()は、オブジェクト固有のIDを返す
		System.out.println(ms.getCreated().toString());
		// Thread.sleep(1200); // VSCodeで動作チェックするときに使うとよい
		MySetting ms2 = MySetting.getInstance();
		System.out.println(ms2.getCreated().toString());
		System.out.println(ms2.getLastAccessed().toString());

		int object_id2 = ms2.hashCode();
		if (object_id == object_id2) {
			System.out.println("Object is same.");
		} else {
			System.out.println("Object is different.");
		}
		if (ms.getCreated() == ms2.getCreated()) {
			System.out.println("CreatedDate is also same.");
		} else {
			System.out.println("CreatedDate is different.");
		}
	}
}

class MySetting {
	private static MySetting instance = null ;  // 初期状態はオブジェクトなし。
	private MySetting(){  // 【重要】コンストラクタは private にしておく(自由に作らせない)
		created = Calendar.getInstance().getTime(); // 作成日時
	}
	private Date created;
	private Date lastAccessed;
	public static MySetting getInstance(){   // インスタンスが必要なら、このメソッドを呼び出す
// TODO: このあたりの、記述を追加・変更する必要がある
		instance = new MySetting();

		instance.lastAccessed = Calendar.getInstance().getTime();
		return instance;
	}
	public Date getCreated(){
		return created;
	}
	public Date getLastAccessed(){
		return lastAccessed;
	}
}