試問,哪個帝王不想開疆拓土,成就萬世之霸業,流傳千古?!
朕,雖坐享盛世,仍不忘對外擴張以彰顯國威。
近日上朝,有大臣上奏,近鄰女兒國因缺乏壯丁,國力衰弱,正是入侵的最好時機。朕當然批准出兵討伐。
這下可壞事了,朕的皇后聽聞此事後,大怒!!!不再與朕言語。晚上都不讓進屋了……
朕雖不才,但麾下謀士無數。找來國師gg商議。國師倒也給力,贈與朕妙計三方。依時機使用即可。
這三個妙計分別是:
誇皇后漂亮
給皇后送禮物
帶皇后去看戲劇
想想看,這三個妙計有什麼相似之處?這些妙計都需要朕去做些什麼,也就是說,三個妙計都需要乙個執行方法。至於執行方法的的內容,則由妙計決定。
先上乙個類圖看看。三個妙計都實現了istrategy介面,每乙個妙計都有乙個operate方法,裡面是具體的妙計內容。
光有妙計還不行,我們還需要乙個地方來承載妙計,這就是錦囊。下面的context就是乙個錦囊類。它負責承載和執行錦囊。
介面很簡單,就乙個方法。
public
inte***ce istrategy
朕來對付皇后的三個策略:誇獎、送禮、陪玩。
下面寫出來乙個,剩下的就不再列**了。詳細**可以看github。
public
class
praisestrategy
implements
istrategy
}
這是錦囊類,**也很簡單。它主要來承載妙計。
public
class context
public
void
operate()
}
最後來看一下朕的動作。每次拿出來乙個錦囊,然後執行其中妙計。
public
class emperor
}
看一下執行結果。看看,乙個妙計不行,就上倆,倆還不行,就來仨。最後把皇后哄開心了吧!
女孩子就是這樣哄才行嘛。
---
---皇后十分不高興,正在扔瓶子。拆開第乙個錦囊!--
----
yyj,你是天下第一美人~--
----
皇后依舊不高興,不理朕。拆開第二個錦囊!--
----
yyj,我摘了個小一點的太陽當禮物送給你暖暖手~--
----
皇后態度稍緩,但仍一臉寒霜。拆開第三個錦囊!--
----
走!朕帶你去看戲!--
----
皇后總算好了,不再生氣了。朕可以發兵打仗了!!!--
----
上面已經描述了策略模式長什麼樣子,但是呢,這個用起來畢竟不是那麼順手,朕用乙個妙計,還得先弄乙個錦囊,再弄出來妙計,再執行,而且每個妙計都得寫乙個類,反正不管怎麼樣就是看著沒那麼爽。
下面呢,要對它做一些擴充套件,讓它看起來更厲害一點。這就是策略列舉了
這個看**就能看出來。我們把所有的策略都寫到了列舉中。相當於每個列舉成員就成了乙個具體的策略。而且讀起來也更容易讓人理解。
public
enum strategies
},sendgift
},praise
};public
abstract
void
operate();
}
看,執行類是不是也簡單了,這樣子更像是拿出來今年,然後執行了妙計。執行結果和之前一樣,就不再貼出來了。
system.out
.println("------皇后十分不高興,正在扔瓶子。拆開第乙個錦囊!------");
//拿出妙計,實施妙計
strategies.praise
.operate();
system.out
.println("------皇后依舊不高興,不理朕。拆開第二個錦囊!------");
//拿出妙計,實施妙計
strategies.sendgift
.operate();
system.out
.println("------皇后態度稍緩,但仍一臉寒霜。拆開第三個錦囊!------");
//拿出妙計,實施妙計
strategies.watchdrama
.operate();
system.out
.println("------皇后總算好了,不再生氣了。朕可以發兵打仗了!!!------");
策略列舉是乙個非常優秀和方便的模式,但是它受列舉型別的限制,每個列舉項都是public、final、static的,擴充套件性受到了一定的約束,因此在系統開發中,策略列舉一般擔當不經常發生變化的角色。 程式設計師到底該如何學習?
這篇文章只適合入門級的程式設計師。很多人都發訊息問我,有沒有推薦的學習 面試資料啊?哎,我只能說,cracking the coding interview leetcode以及leetcode論壇,topcoder等。可是,這真的適合你嗎?我真的不想做這樣不負責任的回答。因為每個人的學習方法應該是...
程式設計師該怎樣和老闆談論公升職加薪
當你忙於工作時,就很容易陷入滿足於現狀的心態,接受當前的一切。事實上,沒有人會永遠是乙個程式設計師。即便是有些工作了二三十年的程式設計師,隨著職業技能的發展,他們也在不同的公司間跳槽。即使是在同一家公司,這些經驗豐富的程式設計師也會在他們的職業生涯中穩步上公升。程式設計師可能是現在為數不多的,在職場...
程式設計師的人生 該將如何規劃
不可否認 在我個人眼裡 選擇做程式設計師 就像選擇其他種類的工作一樣 只是乙份職業 一種在社會上存身立足的手段 而不是源於真正意義上的興趣和喜歡 但同樣 不可否認 在做程式設計師的這幾年 我的生活也在一步步的提公升 現在呢 又在想 自己以前想過 大家也時不時的都會想 的問題 那就是 程式設計師的人生...