摸板模式与钩子

常常会在程序中遇到多个子类有共同的方法以及相似的调用过程。这个时候我们就可以使用模板模式来解决这些重复性的工作,例如我们买东西的时候一般都是挑选商品、付款这样的步骤,区别仅仅是挑选的商品品种不一样而已,这个时候我们就可以使用模板模式。那么模板模式需要怎么来实现呢,如下图

clip_image002

代码如下:

public class test

{

public static void main(String args[])

{

goods f=new fruit();

f.run();

goods d=new drink();

d.run();

}

}

class goods

{

void run()

{

getgoods();

pay();

}

void getgoods()

{

System.out.println("get");

}

void pay()

{

System.out.println("pay");

}

}

class fruit extends goods

{

void getgoods()

{

System.out.println("fruit");

}

}

class drink extends goods

{

void getgoods()

{

System.out.println("drink");

}

}

结果如图:

clip_image004

这样我们就可以避免在子类中涉及具体的算法,只需要将重复的内容已经算法提取到父类即可,降低了耦合。

至此,我们还可以加入一个钩子的机制,即可相应的对一些不需要的算法来进行控制。

代码如下

public class test

{

public static void main(String args[])

{

goods f=new fruit();

f.run();

goods d=new drink();

d.run();

}

}

class goods

{

void run()

{

if(hasGetGoods())

getgoods();

pay();

}

void getgoods()

{

System.out.println("get");

}

boolean hasGetGoods()

{

return false;

}

void pay()

{

System.out.println("pay");

}

}

class fruit extends goods

{

boolean hasGetGoods()

{

return true;

}

void getgoods()

{

System.out.println("fruit");

}

}

class drink extends goods

{

boolean hasGetGoods()

{

return false;

}

void getgoods()

{

System.out.println("drink");

}

}

结果:

clip_image006

联系我:renhanlinbsl@163.com

2016-8-3

21:25

转载于:https://www.cnblogs.com/ives/p/template_pattern.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值