前面说了单例模式,这次说说单例模式的推广——多例模式。

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