`
loseone
  • 浏览: 34621 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

多例模式【Multition Pattern】

阅读更多
这种情况有没有?有!大点声,有没有? 有!,是,确实有,就出现在明朝,那三国期间的算不算,
不算,各自称帝,各有各的地盘,国号不同。大家还记得那首诗《石灰吟》吗?作者是谁?于谦,他是被
谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当
上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,我Shit,在中国的历
史上就这个时期是有2 个皇帝,你说这期间的大臣多郁闷,两个皇帝耶,两个精神依附对象呀。
这个场景放到我们设计模式中就是叫有上限的多例模式(没上限的多例模式太容易了,和你直接new 一
个对象没啥差别,不讨论)怎么实现呢,看我出招
然后看程序,先把两个皇帝定义出来:
package com.cbf4life.singleton2;
import java.util.ArrayList;
import java.util.Random;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 中国的历史上一般都是一个朝代一个皇帝,有两个皇帝的话,必然要PK出一个皇帝出来。
* 问题出来了:如果真在一个时间,中国出现了两个皇帝怎么办?比如明朝土木堡之变后,
* 明英宗被俘虏,明景帝即位,但是明景帝当上皇帝后乐疯了,竟然忘记把他老哥明英宗削为太上皇,
* 也就是在这一个多月的时间内,中国竟然有两个皇帝!
*
*/
您的设计模式
第 17 页
@SuppressWarnings("all")
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)+"帝"));
}
}
//就这么多皇帝了,不允许再推举一个皇帝(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 com.cbf4life.singleton2;
您的设计模式
第 18 页
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 大臣们悲惨了,一个皇帝都伺候不过来了,现在还来了两个个皇帝
* TND,不管了,找到个皇帝,磕头,请按就成了!
*/
@SuppressWarnings("all")
public class Minister {
/**
* @param args
*/
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();
}
}
}
那各位看官就可能会不屑了:有的大臣可是有骨气,只拜一个真神,你怎么处理?这个问题太简单,
懒的详细回答你,getInstance(param)是不是就解决了这个问题?!自己思考,太Easy 了。
分享到:
评论

相关推荐

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD ...

    JAVA设计模式.rar

    多例模式【MULTITION PATTERN】  工厂方法模式【FACTORY METHOD PATTERN】 抽象工厂模式【ABSTRACT FACTORY PATTERN】 门面模式【FACADE PATTERN】  适配器模式【ADAPTER PATTERN】  模板方法模式...

    您的设计模式.pdf。

    多例模式(MULTITION PATTERN) 多例模式是一种创建型设计模式,它提供了多个实例的访问点。多例模式可以帮助开发者在不同的场景下使用不同的实例,以提高系统的灵活性。例如,在一个游戏中,可以使用多例模式来...

    java设计模式(电子书)

    第4章多例模式(MULTITION PATTERN):与单例模式类似,但允许创建多个实例,通常在需要多个实例且这些实例之间需要共享某些状态时使用。 第5章工厂方法模式(FACTORY METHOD PATTERN):定义一个用于创建对象的...

    设计模式与设计原则

    4. **多例模式(Multition Pattern)**:一种类似单例模式的变体,它允许根据不同的键值创建多个实例。 5. **工厂方法模式(Factory Method Pattern)**:定义一个创建对象的接口,但让子类决定实例化哪一个类。 6...

    故事会版 - 设计模式

    #### 四、多例模式【Multition Pattern】 **故事背景:** 虽然刘备决定只任命一位总督,但在处理政务时发现某些情况下需要针对不同的地域指派专门的官员进行管理。于是,他决定根据不同的地区设置相应的官员职位,...

    24个设计模式与6大设计原则

    多例模式(Multition Pattern) 类似于单例模式,但是允许多个实例,这些实例的状态完全相同。 #### 5. 工厂方法模式(Factory Method Pattern) 定义了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂...

    Java设计模式

    #### 多例模式【MULTITION PATTERN】 多例模式是单例模式的一种扩展,它允许一个类有多个实例,但这些实例的数量是固定的。 **应用场景:** 例如,一个应用程序可能需要维护一组用户配置,每个用户对应一个唯一的...

Global site tag (gtag.js) - Google Analytics