《Java與模式》學習筆記(7)——Multiton

所謂的多例模式(Multiton Pattern),實際上就是單例模式的推廣。作爲對象的創建模式,多例模式或多例類有以下的特點:
  • 多例類可有多個實例。
  • 多例類必須自己創建、管理自己的實例,並向外界提供自己的實例。
 
按照實例數目是否有上限,多例模式可以分爲有上限多例類和無上限多例類;如同單例類可以分成有狀態的和沒有狀態的兩種一樣,多例類也可以分成有狀態的和沒有狀態的兩種。多例對象的狀態如果是可以在加載後改變的,那麼這種多例對象叫做可變多例對象(Mutable Multiton);如果多例對象的狀態在加載後不可以改變,那麼這種多例對象叫做不變多例對象(Immutable Multiton)。顯然不變多例類的情形較爲簡單,而可變多例類的情形較爲複雜。
 
package com.javapatterns.multilingual.dice;

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;
    }

}
 
package com.javapatterns.multilingual.dice;

public class Client {
    
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();
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章