④设计模式之多例模式
来源:互联网 发布:js math.pow 编辑:程序博客网 时间:2024/05/19 04:53
④设计模式之多例模式
同一时期有两个皇帝的情况确实存在,就出现明朝。明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,在中国的历史上就这个时期是有两个皇帝的,你说这期间的大臣多郁闷,两个皇帝耶。
这个场景放到我们设计模式中就是叫有上限的多例模式(没有上限的多例模式太容易的,和你直接new一个对象没啥差别,不讨论)怎么实现呢,先看类图
再看看程序
package cn.cjm.Mutipletons;import java.util.ArrayList;import java.util.Random;public class Emperor { private static int maxNumOfEmperor = 2;//最多只能有两个皇帝 private static ArrayList<String> emperorInfoList = new ArrayList<>(maxNumOfEmperor);//装皇帝的名字 private static ArrayList<Emperor> emperorList = new ArrayList<>(maxNumOfEmperor);// 装皇帝的列表 private static int countNumOfEmperor = 0;// 正在被人尊称的是哪个皇帝 // 创建两个皇帝 static { for(int i =0;i<maxNumOfEmperor;i++){ emperorList.add(new Emperor("第"+(i+1)+"个皇帝")); } } private Emperor(){ // 不能再产生皇帝了 } private Emperor(String info){ emperorInfoList.add(info); } public static Emperor getInstance(){ Random random = new Random(); countNumOfEmperor = random.nextInt(maxNumOfEmperor);// 随机选一个皇帝 return emperorList.get(countNumOfEmperor); } // 皇帝叫啥 public static void emperorInfo(){ System.out.println(emperorInfoList.get(countNumOfEmperor)); }}
再看看大臣
/** * 大臣们就比较悲催了,一个皇帝都伺候不过来,现在还来了俩 * TND,不管了,随便找个磕头就跑 * <p>Title:Minster </p> * <p>Description: </p> * @author cjm * @date 2017年9月2日 上午10:05:44 */public class Minster { public static void main(String[] args) { int minsterNum = 10; for(int i=0;i<minsterNum;i++){ Emperor emperor = Emperor.getInstance(); System.out.println("第"+(i+1)+"个大臣参拜的是:"); emperor.emperorInfo(); } }}
那各位看官就可能会不屑了:有的大臣课时有骨气,只拜一个真神,你怎么处理?这个问题太简单了,懒得详细回答你,getInstance(param)是不是就解决了这个问题?!自己思考,太简单了
public static Emperor getInstance(int numOfEmperor){ if(numOfEmperor>0 && numOfEmperor <maxNumOfEmperor){ return emperorList.get(numOfEmperor); } else return null;}
阅读全文
0 0
- ④设计模式之多例模式
- 设计模式之多例模式
- 设计模式之多例模式
- 设计模式之多例模式
- java_23种设计模式之多例模式
- java设计模式之多例模式
- 设计模式之多例模式04
- 单例模式之多例类【设计模式】
- 设计模式之多例模式(Multition Pattern)
- 设计模式之多线程模式Guarded Suspension
- 胖虎白话学习设计模式之多线程与单例模式设计模式(Singleton)
- Java模式设计之多态模式与多语言支持
- 札记——设计模式之多个工厂方法模式
- 黑马程序员----------java基础加强之多线程、单例设计模式
- java线程安全之多线程的设计模式(十四)
- 阻塞模式之多线程
- Singleton模式之多线程
- 设计模式------单例模式
- python安装与初步使用教程
- HorizontalTabhost
- 关于将微博上视频保存在电脑本地的方法汇总
- BP神经网络的Python简单实现
- CyclicBarrier
- ④设计模式之多例模式
- logstash-input-jdbc 同步原理及相关问题解读
- 版本控制之VSS(一)
- unity时间延迟方法总结(新人勿喷)
- 前端面试之---javascript作用域和闭包
- 五子棋学习(1)
- Leap Motion C++开发笔记(一)下载安装及环境配置
- 【九度OJ】1187:最小年龄的3个职工
- 【DP】51Nod 1052 最大M子段和