程式設計師該如何管理後宮 怎樣哄女孩兒(策略模式)

2021-07-25 15:44:27 字數 2419 閱讀 5533

試問,哪個帝王不想開疆拓土,成就萬世之霸業,流傳千古?!

朕,雖坐享盛世,仍不忘對外擴張以彰顯國威。

近日上朝,有大臣上奏,近鄰女兒國因缺乏壯丁,國力衰弱,正是入侵的最好時機。朕當然批准出兵討伐。

這下可壞事了,朕的皇后聽聞此事後,大怒!!!不再與朕言語。晚上都不讓進屋了……

朕雖不才,但麾下謀士無數。找來國師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等。可是,這真的適合你嗎?我真的不想做這樣不負責任的回答。因為每個人的學習方法應該是...

程式設計師該怎樣和老闆談論公升職加薪

當你忙於工作時,就很容易陷入滿足於現狀的心態,接受當前的一切。事實上,沒有人會永遠是乙個程式設計師。即便是有些工作了二三十年的程式設計師,隨著職業技能的發展,他們也在不同的公司間跳槽。即使是在同一家公司,這些經驗豐富的程式設計師也會在他們的職業生涯中穩步上公升。程式設計師可能是現在為數不多的,在職場...

程式設計師的人生 該將如何規劃

不可否認 在我個人眼裡 選擇做程式設計師 就像選擇其他種類的工作一樣 只是乙份職業 一種在社會上存身立足的手段 而不是源於真正意義上的興趣和喜歡 但同樣 不可否認 在做程式設計師的這幾年 我的生活也在一步步的提公升 現在呢 又在想 自己以前想過 大家也時不時的都會想 的問題 那就是 程式設計師的人生...