設計模式(13) 模板方法模式

2021-10-05 06:01:11 字數 2202 閱讀 1571

編寫製作豆漿的程式,說明如下:

1)製作豆漿的流程 選材—>新增配料—>浸泡—>放到豆漿機打碎

2)通過新增不同的配料,可以製作出不同口味的豆漿

3)選材、浸泡和放到豆漿機打碎這幾個步驟對於製作每種口味的豆漿都是一樣的

4)請使用模板方法模式完成(說明:因為模板方法模式,比較簡單,很容易就想到這個方案,因此就直接使用,不再使用傳統的方案來引出模板方法模式)

原理類圖

對原理類圖的說明-即(模板方法模式的角色及職責)

package com.lm.template;

//抽象類,表示豆漿

public

abstract

class

soyamilk

//選材料

void

select()

//新增不同的配料,抽象方法,子類具體實現

abstract

void

addcondiments()

;//浸泡

void

soak()

//打碎

void

beat()

}

package com.lm.template;

//紅豆豆漿

public

class

redbeansoyamilk

extends

soyamilk

}

package com.lm.template;

//花生豆漿

public

class

peanutsoyamilk

extends

soyamilk

}

package com.lm.template;

public

class

client

}

package com.lm.template.improve;

//抽象類,表示豆漿

public

abstract

class

soyamilk

soak()

;beat()

;}//選材料

void

select()

//新增不同的配料,抽象方法,子類具體實現

abstract

void

addcondiments()

;//浸泡

void

soak()

//打碎

void

beat()

//鉤子方法,決定是否需要新增配料

boolean

customerwantcondiments()

}

package com.lm.template.improve;

//紅豆豆漿

public

class

redbeansoyamilk

extends

soyamilk

}

package com.lm.template.improve;

//花生豆漿

public

class

peanutsoyamilk

extends

soyamilk

}

package com.lm.template.improve;

//純豆漿

public

class

puresoyamilk

extends

soyamilk

@override

boolean

customerwantcondiments()

}

package com.lm.template.improve;

public

class

client

}

設計模式 13 模板方法模式

在模板模式 乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。定義遊戲的模板 package com.actionpattern.gabarit.edition1 public abstract class game 定義實際的遊戲 pa...

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

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

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

物件導向,萬物皆物件,用乙個雷來反應現實生活中的東西。比如銀行系統,業務公升級 活期 定期,差別很小,就加判斷 違背單一職責 差別比較多,尤其是模擬較複雜,型別拆分下。拆分之後,自然就有父類,重用。利率 每個客戶端都有利率,但是各不一樣 抽象方法。show 不分客戶端是一樣的,個別客戶端是不一樣的 ...