设计模式之模版方法模式的钩子方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之模版方法模式的钩子方法相关的知识,希望对你有一定的参考价值。


设计模式之模版方法模式的钩子方法_html5

 

设计模式之模版方法模式的钩子方法_html5_02

public  abstract class SoyaMilk 
//模版方法 可以做成finaL,不让子类去覆盖
final void make()
select();
if(customerWantCondiments())
addCondiments();

soak();
beat();


void select()
System.out.println("第一步,请选择好的新鲜黄豆");


//添加不同的配料,抽象方法,子类具体实现
abstract void addCondiments();



//浸泡
void soak()
System.out.println("第三部,黄豆和配料开始浸泡,需要三个小时");


void beat()
System.out.println("第四步:黄豆和配料放到豆浆机去打碎");



//钩子方法,决定是否需要添加配料
boolean customerWantCondiments()
return true;

设计模式之模版方法模式的钩子方法_html_03

 

public class ReadBeanSoyaMilk extends SoyaMilk
@Override
void addCondiments()
System.out.println("加入上好的红豆");

 

设计模式之模版方法模式的钩子方法_html5_04

public class PureSoyaMilk  extends SoyaMilk
@Override
void addCondiments()
System.out.println("2112");


@Override
boolean customerWantCondiments()
return false;

设计模式之模版方法模式的钩子方法_java_05

 

public class PeanutSoyaMilk extends SoyaMilk
@Override
void addCondiments()
System.out.println("加入上好的花生");

设计模式之模版方法模式的钩子方法_ide_06

 

public class Cilent 
public static void main(String[] args)
//制作红豆豆浆
SoyaMilk readBeanSoyaMilk = new ReadBeanSoyaMilk();
readBeanSoyaMilk.make();

//制作花生豆浆
SoyaMilk soyaMilk = new PeanutSoyaMilk();
soyaMilk.make();

//制作纯豆浆
SoyaMilk ps = new PureSoyaMilk();
ps.make();

设计模式之模版方法模式的钩子方法_ide_07

 

 

以上是关于设计模式之模版方法模式的钩子方法的主要内容,如果未能解决你的问题,请参考以下文章

java中钩子方法的概念

设计模式之—模版方法模式

设计模式之模版方法模式

设计模式之禅——模板方法模式&钩子方法

python设计模式之模版方法设计模式

设计模式之建造者模式模版方法