前面說了單例模式,這次說說單例模式的推廣——多例模式。
有上限多例模式
com.cleversoft.designpatterns.multiton.Die.java:
package?com.cleversoft.designpatterns.multiton;

import?java.util.Random;
import?java.util.Date;


public?class?Die?
{
????private?static?Die?die1?=?new?Die();

????private?static?Die?die2?=?new?Die();


????private?Die()?
{
????}


????public?static?Die?getInstance(int?whichOne)?
{

????????if?(whichOne?==?1)?
{
????????????return?die1;

????????}?else?
{
????????????return?die2;
????????}
????}


????public?synchronized?int?dice()?
{
????????Date?d?=?new?Date();

????????Random?r?=?new?Random(d.getTime());
????????int?value?=?r.nextInt();
????????value?=?Math.abs(value);

????????value?=?value?%?6;
????????value?+=?1;
????????System.out.println(value);
????????return?value;
????}

}
com.cleversoft.designpatterns.multiton.Main.java:
package?com.cleversoft.designpatterns.multiton;


public?class?Main?
{
????private?static?Die?die1;

????private?static?Die?die2;


????public?static?void?main(String[]?args)?
{
????????die1?=?Die.getInstance(1);
????????die2?=?Die.getInstance(2);

????????die1.dice();
????????die2.dice();
????}
}
無上限多例模式
比較合適的例子就是在應用程序中的“多語言支持”和序列鍵生成器。
參考資料:《Java與模式》
有上限多例模式
com.cleversoft.designpatterns.multiton.Die.java:















































com.cleversoft.designpatterns.multiton.Main.java:



















無上限多例模式
比較合適的例子就是在應用程序中的“多語言支持”和序列鍵生成器。
參考資料:《Java與模式》
|
|
歡迎大家訪問我的個人網站 萌萌的IT人