設計思想學習 模版方法模式

2021-08-14 08:25:37 字數 1600 閱讀 9219

不知各位看官有無遇到過一種情況,就是很多方法其實很相似,只是各自業務有點區別,大致上還是一樣。

而當我看到模版方法模式的時候眼睛一亮,這個可以完美解決問題。

其實這個模式並不難,簡單來講就是把相同的抽象出來,運用多型的性質完成不同的事情。

看一下大話設計模式裡面的**例子

兩個人分別抄同樣的卷子,然後考試

class test*****a

public

void

testquestionb()

public

void

testquestionc()

}class test*****b

public

void

testquestionb()

public

void

testquestionc()

}

通過呼叫回答的話答案分別是acd和bcd。

其實他們中間唯一需要不同的只有回答後面的那個答案,所以我們就可以把同樣的地方抽象出來,把不同的地方設乙個未知的方法,去讓子類實現

//把相同的抽象成抽象類

abstract class test*****

public

void

testquestionb()

public

void

testquestionc()

//交給子類自己去實現

public

abstract string answer1();

public

abstract string answer2();

public

abstract string answer3();

}

然後我們在讓ab兩個各子繼承答題

class

test*****a

extends

test*****

@override

public string answer2()

@override

public string answer3()

}class

test*****b

extends

test*****

@override

public string answer2()

@override

public string answer3()

}

這樣輸出的答案還是acd和bcd,只不過不用在各自抄一遍題目了。

不難看出模板方法模式就結構就兩個組成:

最後的話

個人感覺模版方法模式是到現在為止最簡單的模式沒有之一,主要就是把相同的**抽出來,並沒有太多的結構和思想,簡單明瞭。相信不看大家也都會用,主要是不知道它竟然是一種設計模式。

設計思想學習 工廠方法模式

主要內容 首先先來乙個沒有運用模式的普通案例 模擬計算器例子 public class calc system.out.println amount 簡單工廠版 class operation class addextends operation class subextends operation...

設計思想學習 策略模式

首先來看一下定義 策略模式 strategy 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 策略模式主要有三點組成 舉個栗子 我中午想吃好吃的,但可以吃的東西有很多種 烤鴨 龍蝦 帝王蟹,但是不管吃啥,都是吃,所有就有了抽象策略角色 inte ce dine 下面這些是具體吃啥,也...

設計思想學習 外觀模式

記得有一次,我們一起去了乙個別墅轟趴,那時候大家都去玩自己想玩的事情,大廳開燈是必須的,看電影的要去小房間開投影儀幕布,玩遊戲的要開電腦或者xbox等等。最後玩的筋疲力盡了還要乙個個去把他們關掉,那時候就在想如果有乙個按鈕關掉或者開啟所有多好。直到今天看了外觀模式才知道,那個想法就是乙個外觀模式的思...