美文网首页JAVA设计模式
Java设计模式之四多例模式

Java设计模式之四多例模式

作者: 095b62ead3cd | 来源:发表于2019-06-27 16:18 被阅读0次

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

    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
    

    相关文章

      网友评论

        本文标题:Java设计模式之四多例模式

        本文链接:https://www.haomeiwen.com/subject/awvlcctx.html