設計模式之模板方法模式(九)

2021-08-16 17:34:24 字數 2102 閱讀 4889

模板方法模式是將公用的**抽取到父類,並定義可變部分由子類實現的一種模式。

玩家玩遊戲的時候會給角色配置服裝,那麼不可避免給每個玩家都例項乙個player物件,並且設定服裝。

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class playera

public void trousers()

public void coat()

public void shoes()

public void wear()

}

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class playerb

public void trousers()

public void coat()

public void shoes()

public void wear()

}

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class demo

}

這樣的實現方式可能已經發現問題了,首先playera和playerb的wear方法都是一樣的,並且其它的clothes/trousers/ coat /shoes方法都是根據使用者自定義的去實現。模板方法模式的描述是:抽取公共的給父類,並且定義可變部分由子類實現。

類圖

**抽取父類

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public abstract class player

}

玩家a裝扮
package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class playera extends player

@override

protected void trousers()

@override

protected void coat()

@override

protected void shoes()

}

玩家b裝扮

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class playerb extends player

@override

protected void trousers()

@override

protected void coat()

@override

protected void shoes()

}

demo

package com.rabbit.pattern.template;

/** * created by vip on 2018/3/9.

*/public class demo

}

看到模板方法模式的實現方式,可能大家就恍然大悟原來抽象繼承就是一種設計模式。我們在程式設計的過程中可能無意就使用到了某種設計模式,但是由於沒有系統的學習設計模式不知道自己使用了而已。很多設計模式直接大致相同,只是在職責上有所區別而已。例如裝飾者模式和**模式。

優點1)  將不變的行為抽取到超類,出去了子類中重複的**。比較物件導向程式設計就是要去除重複嘛。

設計模式(九) 模板方法

什麼是模板方法模式?模板方法 templatemethod 定義乙個操作中的演算法骨架,將一些步驟延遲到子類。模板方方法使得子類可以不改變演算法結構,即可重定義演算法的某些步驟。簡單來說,模板方法就是定義了做事情的步驟,而這些具體的步驟會根據需求少許改變,但總的步驟結構不變。模板方法最大的優點在於將...

模板設計模式 PHP設計模式之模板方法模式

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...

設計模式之模板方法設計模式

父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...