模板方法模式(TemplateMethod Pattern)(二):java中模板方法和钩子的使用示例
2013-05-11 09:43
1116 查看
一、java API中的模板方法的使用
1.Arrays.sort()排序
在对数组进行排序时,我们常会使用Arrays.sort()方法,Arrays类的sort()方法就是模板方法。模板方法模式的重点在于提供一个算法,并让子类实现某些步骤,但是在Arrays.sort()数组排序时并不是如此,通常我们无法设计一个类继承java数组,而sort()方法希望能够适用于所有的数组(每个数组都是不同的类),所以定义了一个静态的sort()方法,在模板方法sort()中需要元素比较大小的算法部分,但是对于不同的类有不同的排序规则,所以让被排序的对象内的每个元素提供比较大小的算法部分(方式就是被排序元素的类必须实现Comparable接口)。
Arrays.sort()对数组排序虽然不是先前所说的模板方法的标准实现,但是它的实现仍然符合模板方法模式的精神,再者,由于不需要继承数组就可以实现这个算法,这样使得排序变得更有弹性、更有用。
java中常用的类Integer、String等已经实现了Comparable接口,所以可以直接使用Arrays.sort()对该类型的数组进行排序,如果需要对自定义类型的数组进行排序,则我们自定义的类必须实现Comparable接口。
2.java.io.InputStream类的read()方法
java.io.InputStream抽象类是表示字节输入流的所有类的超类。其中的read(byte b[],int off,int len)就是一个模板方法,在该方法中调用了该类的抽象方法read(),要求子类提供read()方法的实现。这是模板方法模式的典型使用。3.Swing窗口程序中的钩子:paint()方法
在默认情况下paint()方法是不做事情的(即空实现)(JFrame的超类Component中对paint()进行了空实现),它是一个“钩子”,通过覆盖paint()方法,我们可以将自己的代码插入到JFrame的算法中,显示出想要的画面。例:
public class MyFrame extends JFrame { public MyFrame(String titile) { super(titile); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(200, 200); this.setVisible(true); } @Override public void paint(Graphics g) { super.paint(g); g.drawString("paint() is a hook", 40, 100); } public static void main(String[] args) { MyFrame f = new MyFrame("swing"); } }
效果:
4.Applet中的钩子
Applet类中的init()、start()、stop()、destroy()等方法都是空实现的,子类可以选择性地Override这些方法进行扩展。5.其他
。。。。。。。二、java技术或开源框架中的模板方法模式的使用
JUnit中的模板方法模式的使用其他。。。
转载请注明出处:http://blog.csdn.net/jialinqiang/article/details/8869044
相关文章推荐
- java设计模式之模板模式以及钩子方法使用
- 使用模板方法模式实现可扩展性设计(Java示例)
- 新秀翻译(两)——使用Java通用配置模板方法模式
- java设计模式——模板方法模式(Template Method Pattern)
- 设计模式——模板方法模式(TemplateMethod Pattern)
- iOS App使用设计模式中的模板方法模式开发的示例
- JAVA设计模式之 模板方法模式【Template Method Pattern】
- java设计模式---模板方法模式(Template pattern)
- Java设计模式--模板方法模式【Template Pattern】
- 浅谈JAVA设计模式之——模板方法(TemplateMethod)
- 我读设计模式之模板方法模式(TemplateMethod Pattern)
- 模板方法模式(TemplateMethod Pattern)(一):模板方法模式介绍
- Java 实现模板方法(TemplateMethod)模式
- 设计模式 - 观察者模式(Observer Pattern) Java内置 使用方法
- Java设计模式——模板方法模式(TEMPLATE METHOD PATTERN)
- 设计模式——模板方法模式(TemplateMethod Pattern)
- java_设计模式_模板方法模式_Template Method Pattern(2016-08-11)
- Java 实现模板方法(TemplateMethod)模式
- "围观"设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)
- 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 使用方法