JAVA设计模式

Java设计模式之四多例模式

2019-06-27  本文已影响0人  095b62ead3cd

多例模式是对象创建模式的一种,它通过实例容器保存实例,利用私有构造方法防止外部构造,然后提供方法给外界调用获取实例。多例模式中的多例类可以有多个实例,而且多例类必须自己创建和管理自己的实例,并向外界提供自己的实例。它的特点在于一可以有多个实例,二必须自己创建自己管理实例,并且向外界提供。它主要是为了解决并发问题中,多个操作需要不能使用同一个实例的问题
下面以一个简单的例子说明这个模式的使用。
一间房里有两个开关,每个开关控制一盏灯。

package com.a;
import java.util.ArrayList;
import java.util.Random;

@SuppressWarnings("unchecked")

public class Switch{
    private static int swithNum = 2;//有多少开关
    private static ArrayList switchArr = new ArrayList(swithNum);//开关的列表
    private static ArrayList switchInfo = new ArrayList(swithNum);//开关信息的列表
    private static int switchN = 0;//正在操作的开关
    static{
        for (int i = 0 ; i < swithNum; i++){
            switchArr.add(new Switch("开关"+(i + 1)));
        }
    }
    private Switch(){
    }
    
    private Switch(String info){
        switchInfo.add(info);
    }
    
    public static Switch shareInstance(){
        Random random = new Random();
        switchN = random.nextInt(swithNum);
        return (Switch)switchArr.get(switchN);
    }
    
    public static void switchInfo(){
        System.out.println(switchInfo.get(switchN));
    }
    
}
package com.a;
import com.a.Switch;
public class Person{
    public static void main(String[] args){
        Switch s = Switch.shareInstance();
        s.switchInfo();
    }
}

编译Java文件并运行:

未命名文件夹 imac03$ javac -d . Switch.java
未命名文件夹 imac03$ javac -d . Person.java 
未命名文件夹 imac03$ java com.a.Person

结果:

未命名文件夹 imac03$ java com.a.Person
开关1
未命名文件夹 imac03$ java com.a.Person
开关2
上一篇下一篇

猜你喜欢

热点阅读