摸板模式与钩子

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

代码如下:

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");

}

}

结果如图:

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

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

代码如下

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");

}

}

结果:

联系我:[email protected]

2016-8-3

21:25

时间: 2024-12-09 06:54:50

摸板模式与钩子的相关文章

PS快捷键大全

一.工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具 [M] 移动工具 [V] 套索.多边形套索.磁性套索 [L] 魔棒工具 [W] 裁剪工具 [C] 切片工具.切片选择工具 [K] 喷枪工具 [J] 画笔工具.铅笔工具 [B] 像皮图章.图案图章 [S] 历史画笔工具.艺术历史画笔 [Y] 像皮擦.背景擦除.魔术像皮擦 [E] 渐变工具.油漆桶工具 [G] 模糊.锐化.涂抹工具 [R] 减淡.加深.海棉工具 [O] 路径选择工具.直接选取工具 [A] 

PS基础

2013年7月,Adobe公司推出新版本photoshop——Photoshop CC(Creative Cloud).在Photoshop CS6功能的基础上,Photoshop CC新增相机防抖动功能.CameraRAW功能改进.图像提升采样.属性面板改进.Behance集成等功能,以及Creative Cloud,即云功能. 继2012年Adobe推出Photoshop CS6版本后,Adobe又在MAX大会上推出了最新版本的Photoshop CC (Creative Cloud).在主

Java面向对象笔记6

我们在编写类时,常常需要为它定义一些方法,这些方法主要用来描述该类的行为方式,因此,这些方法都有具体 的方法体.但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确的知道这些子类如何实现 这些方法.对于以上的问题有何解法呢?使用抽象方法就可以满足这些要求:抽象方法是只有方法签名,没有方法 实现的方法. 抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象 方法,对于抽象方法和抽象类的规则如下: 1.抽象类必须使用abstra

2月5日 ps网页设计(ps快捷键大全)

1.工具箱   移动工具 [V]矩形.椭圆选框工具 [M]套索.多边形套索.磁性套索 [L]快速选择工具.魔棒工具 [W] 裁剪.透视裁剪.切片.切片选择工具 [C]吸管.颜色取样器.标尺.注释.123计数工具 [I] 污点修复画笔.修复画笔.修补.内容感知移动.红眼工具 [J] 画笔.铅笔.颜色替换.混合器画笔工具 [B]仿制图章.图案图章工具 [S] 历史记录画笔工具.历史记录艺术画笔工具 [Y] 像皮擦.背景橡皮擦.魔术橡皮擦工具 [E]渐变.油漆桶工具 [G]减淡.加深.海棉工具 [O]

ps快捷键

Photoshop快捷键 (带下划线的为最常用的) 工具箱(多种工具共用一个快捷键的可同时按Shift加此快捷键选取)  矩形.椭圆选框工具 M 移动工具 V 套索.多边形套索.磁性套索 L 裁剪工具 C 切片工具.切片选择工具 K 喷枪工具 [J] 画笔工具.铅笔工具 [B] 像皮图章.图案图章 [S]  历史画笔工具.艺术历史画笔 [Y]  像皮擦.背景擦除.魔术像皮擦 [E]  渐变工具.油漆桶工具 [G]  模糊.锐化.涂抹工具 [R]  减淡.加深.海棉工具 [O]  路径选择工具.直

PS快捷键大全

一.工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取)  矩形.椭圆选框工具 [M]  移动工具 [V]  套索.多边形套索.磁性套索 [L]  魔棒工具 [W]  裁剪工具 [C]  切片工具.切片选择工具 [K]  喷枪工具 [J]  画笔工具.铅笔工具 [B]  像皮图章.图案图章 [S]  历史画笔工具.艺术历史画笔 [Y]  像皮擦.背景擦除.魔术像皮擦 [E]  渐变工具.油漆桶工具 [G]  模糊.锐化.涂抹工具 [R]  减淡.加深.海棉工具 [O]  路径选

PHOTOSHOP常用快捷键大全

PHOTOSHOP常用快捷键大全一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTRL+ALT+S打印设置 CTRL+ALT+P页面设置 CTRL+SHIFT+P打印 CTRL+P退出 CTRL+Q 二.编辑撤消 CTRL+Z向前一步 CTRL+SHIFT+Z向后一步 CTRL+ALT+Z退取 CTRL+SHIFT+F剪切 CTRL+X复制 CTRL+C合并复制 CTRL+SHIFT

PHP文件系统处理

文件系统概述 文件类型 PHP是以UNIX的文件系统为模型的,因此Windows系统中我们只能获得"file"."dir"或者"unknown"三种文件类型.而UNIX系统中,可以获得"block"."char"."dir"."fifo"."file"."link"和"unknown"7种类型. 使用file

Photoshop CS6 快捷键

1.工具箱   移动工具 [V]矩形.椭圆选框工具 [M]套索.多边形套索.磁性套索 [L]快速选择工具.魔棒工具 [W] 裁剪.透视裁剪.切片.切片选择工具 [C]吸管.颜色取样器.标尺.注释.123计数工具 [I] 污点修复画笔.修复画笔.修补.内容感知移动.红眼工具 [J] 画笔.铅笔.颜色替换.混合器画笔工具 [B]仿制图章.图案图章工具 [S] 历史记录画笔工具.历史记录艺术画笔工具 [Y] 像皮擦.背景橡皮擦.魔术橡皮擦工具 [E]渐变.油漆桶工具 [G]减淡.加深.海棉工具 [O]