前面說了單例模式,這次說說單例模式的推廣——多例模式。

有上限多例模式
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與模式》

歡迎大家訪問我的個人網站 萌萌的IT人