鱼C论坛

 找回密码
 立即注册
查看: 2053|回复: 0

java设计模式之多例模式

[复制链接]
发表于 2015-1-21 11:28:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个场景放到我们设计模式中就是叫有上限的多例模式(没上限的多例模式太容易了,和你直接 new 一
个对象没啥差别,以下是实现的代码:
import java.util.ArrayList;
import java.util.Random;

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(emperorList.get(countNUmOfEmperor));
   }
}




public class ManySingle
{
   public static void main(String args[])
   {
      int ministerNum = 10;   //10个大臣

      for(int i=0; i < ministerNum; i++)
      {
         Emperor emperor = Emperor.getInstance();
         System.out.print("第"+(i+1) + "个大臣参拜的是:");
         emperor.emperorINfo();
      }
   }
}
2015-01-21 11:29:57 的屏幕截图.png





本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 16:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表