四 多例模式【Multition Pattern】 来自CBF4LIFE 的设计模式
作者:互联网
出现在明朝,那三国期间的算不算,
不算,各自称帝,各有各的地盘,国号不同。大家还记得那首诗《石灰吟》吗?作者是谁?于谦,他是被
谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当
上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,我 Shit,在中国的历
史上就这个时期是有 2 个皇帝,你说这期间的大臣多郁闷,两个皇帝耶,两个精神依附对象呀。
这个场景放到我们设计模式中就是叫有上限的多例模式(没上限的多例模式太容易了,和你直接 new 一
个对象没啥差别,不讨论)怎么实现呢,看我出招,先看类图:
然后看程序,先把两个皇帝定义出来:
package MultitionPattern; import java.util.ArrayList; import java.util.Random; /** * @author lhb * @类名 Emperor * @描述 * @时间 2022/6/13 10:35 * @版本 **/ 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; //正在被人尊称的是那个皇帝 //先把2个皇帝产生出来 static{ //把所有的皇帝都产生出来 for(int i=0;i<maxNumOfEmperor;i++){ emperorList.add(new Emperor("皇"+(i+1)+"帝")); } } private Emperor(String info){ emperorInfoList.add(info); } public static Emperor getInstance(){ Random rmd = new Random(); countNumOfEmperor = rmd.nextInt(maxNumOfEmperor); return (Emperor) emperorList.get(countNumOfEmperor); } //皇帝叫什么名字呀 public static void emperorInfo(){ System.out.println(emperorInfoList.get(countNumOfEmperor)); } }
那大臣是比较悲惨了,两个皇帝呀,两个老子呀,怎么拜呀,不管了,只要是个皇帝就成
package MultitionPattern; /** * @author lhb * @类名 Minister * @描述 * @时间 2022/6/14 10:16 * @版本 **/ public class Minister { public static void main(String[] args) { int ministerNum =1000; //1000个大臣 for(int i =0;i<ministerNum;++i){ Emperor emperor = Emperor.getInstance(); System.out.println("第"+i+1+"个大臣参拜:"); Emperor.emperorInfo(); } } }
那各位看官就可能会不屑了:有的大臣可是有骨气,只拜一个真神,你怎么处理?这个问题太简单,
懒的详细回答你,getInstance(param)是不是就解决了这个问题?!自己思考,太 Easy 了。
第
标签:int,Pattern,皇帝,private,public,CBF4LIFE,static,设计模式,ArrayList 来源: https://www.cnblogs.com/ybsz/p/16373785.html