设计模式之多例模式

1、定义:作为对象的创建模式,多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。(可以控制自己想外界提供多少个实例)(这仅仅是学习笔记哦,真有了什么更深的理解,我会往上加的)

2、特点:

(1)多例类可以有多个实例。

(2)多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

(3)根据是否有实例上线,可分为有上限多例类和无上限多例类。

3、代码举例,就以设计模式之禅中的例子为准:

 

package org.mn.mulitition_pattern;

import java.util.ArrayList;
import java.util.Random;

/**
* @Description:    多例模式测试,多例类
* @Author:         MengNing
* @CreateDate:     2019/6/11 22:06
* @UpdateUser:
* @UpdateDate:     2019/6/11 22:06
* @UpdateRemark:   
* @Version:        1.0
*/
public class Emperor {
    // 定义对象的最大个数
    private static int maxNumOfEmperor = 2;
    //
    private static ArrayList emperorInfoList = new ArrayList(maxNumOfEmperor);
    // 存放对象的列表
    private static ArrayList emperorList = new ArrayList(maxNumOfEmperor);
    //
    private static int countNumOfEmperor = 0;

    // 先获取两个对象
    static {
        for (int i = 0; i < maxNumOfEmperor; i++) {
            emperorList.add(new Emperor("第" + (i+1) + "对象"));
        }
    }
    // 限制外部new更多的对象
    private Emperor() {

    }
    private Emperor(String info) {
        emperorInfoList.add(info);
    }

    public static Emperor getInstance () {
        Random random = new Random();
        // 随机获取一个对象
        countNumOfEmperor = random.nextInt(maxNumOfEmperor);
        return (Emperor) emperorList.get(countNumOfEmperor);
    }

    public static void emperorInfo () {
        System.out.println(emperorInfoList.get(countNumOfEmperor));
    }

}

package org.mn.mulitition_pattern;
/**
* @Description:    
* @Author:         MengNing
* @CreateDate:     2019/6/11 22:46
* @UpdateUser:     
* @UpdateDate:     2019/6/11 22:46
* @UpdateRemark:   
* @Version:        1.0
*/
public class Minsiter {
    public static void main(String[] args) {
        int ministerNum = 10;
        for (int i = 0; i < ministerNum; i++) {
            Emperor emperor = Emperor.getInstance();
            System.out.print("第"+(i+1)+"个人获取的对象是:");
            emperor.emperorInfo();
        }
    }
}

运行结果:

最近才用上IDEA,感觉是真的好用,不过公司还是用的eclipse,IDEA还是我自己慢慢熟悉吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值