多例設計模式
1.寫在前面
外包的歸屬感的真的沒有,博主還好是比較孤獨的,所以沒有多大的影響,今年大的行情真的是不怎麼樣,筆者打算在這家外包待個半年,然後決定開溜。先好好學習充電吧!今天講到就是多例模式。
2.多例模式
這種情況有沒有?有!大點聲,有沒有?有!是,確實有,就出現在明朝,那三國期間的算不算,不算,各自稱帝,各有各的地盤,國號不同。大家還記得那首詩《石灰吟》嗎?作者是誰?于謙,他是被誰殺死的?明英宗朱祁鎮 ,對,就是那個在土木堡之變中被瓦刺俘虜的皇帝,被俘虜後,他弟弟朱祁鈺當上了皇帝, 就是明景帝,估計當上皇帝后樂瘋了,忘記把老哥朱祁鎮削為太上皇了, 我Shit,在中國的歷史上就這個時期是有2個皇帝,你說這期間的大臣多鬱悶,兩個皇帝耶,兩個精神依附物件呀。
這個場景放在我們設計模式中就是叫有上限的多例模式(沒上限的多例模式太容易了,和你直接new一個物件沒啥差別,不討論)怎麼實現呢,看我出招,先看類圖:
2.1具體的程式碼
然後看程式,先把兩個皇帝定義出來:
package com.ys;
import java.util.ArrayList;
import java.util.Random;
/*
* 中國的歷史上一般都是一個朝代一個皇帝,有兩個皇帝的話,必然要PK出一個皇帝出來。
* 問題出來了:如果真在一個時間,中國出現了兩個皇帝怎麼辦?比如明朝土木堡之變後,
* 明英宗被俘虜,明景帝即位,但是明景帝當上皇帝后樂瘋了,竟然忘記把他老哥明英宗削為太上皇,
* 也就是在這一個多月的時間內,中國竟然有兩個皇帝!
* */
@SuppressWarnings("all")
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;
//先把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 emperorList.get(countNumOfEmperor);
}
//皇帝叫什麼名字呀
public static void emperorInfo(){
System.out.println(emperorInfoList.get(countNumOfEmperor));
}
}
那大臣是比較悲慘了,兩個皇帝呀,兩個老子呀,怎麼拜呀,不管了,只要是個皇帝就成:
package com.ys;
/*
* 大臣們悲慘了,一個皇帝都伺候不過來了,現在還來了兩個個皇帝
* TND,不管了,找到個皇帝,磕頭,請按就成了!
* */
@SuppressWarnings("all")
public class Minister {
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 了。
3.寫在最後
本篇部落格主要介紹了多例設計模式,這兒的多例設計模式,主要不是通過new的來建立的,這兒是指定的建立指定的個數的物件。
相關文章
- 極簡設計模式-多例模式設計模式
- 設計模式-單例模式、多例模式設計模式單例
- 架構設計:單例模式、多例模式相比較有何不同?架構單例模式
- PHP模式大全 - 多例模式PHP模式
- 設計模式(四)Singleton設計模式設計模式
- 設計模式----工廠設計模式設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式-工廠設計模式設計模式
- 設計模式之單例設計模式設計模式單例
- 【設計模式】設計模式(一)-- 大話設計模式讀書筆記設計模式筆記
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 設計模式----中介模式設計模式
- 設計模式-中介模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-代理模式設計模式
- 設計模式-策略模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式----代理模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式——策略模式設計模式
- 設計模式——代理模式設計模式
- 一.設計模式之工廠設計模式設計模式
- 設計模式總結 —— 單例設計模式設計模式單例
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- JavaScript設計模式之建立型設計模式JavaScript設計模式
- 23種設計模式(八)-原型設計模式設計模式原型
- 23種設計模式(二)---策略設計模式設計模式
- Yii2設計模式——設計模式簡介設計模式
- Java設計模式系列之單例設計模式Java設計模式單例
- 淺識JAVA設計模式——單例設計模式Java設計模式單例
- JAVA設計模式之 13.命令設計模式Java設計模式
- 《Head First 設計模式》:與設計模式相處設計模式
- Java設計模式之介面卡設計模式Java設計模式
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- 23種設計模式(七)-狀態設計模式設計模式
- 23種設計模式(四)- 模板方法設計模式設計模式