设计模式之模板方法
设计模式之模板方法
什么是模板方法模式呐,在我看来就是先规定一些大概的流程,但是呢,有些具体的流程内部细节让子类去实现,就是将不变的封装起来,可变的留给子类具体实现,从而达到灵活处理。专业来讲就是在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为Template Method模式
类图

看着比较简单哈,也确实很简单,但是这个模式的用途却很大,比如著名的AQS就是利用模板方法,实现AQS的一些抽象方法就可以自己制作一把锁。
代码
抽象类
public abstract class AbstractDisplay {
/**
* 打开操作
*/
abstract void open();
/**
* 输出操作
*/
abstract void print();
/**
* 关闭操作
*/
abstract void close();
/**
* 模板方法,使用final是为了防止被子类重写
*/
final void display() {
open();
print();
close();
}
}
具体类
public class ConcretClass extends AbstractDisplay{
@Override
void open() {
System.out.println("子类实现打开文件");
}
@Override
void print() {
System.out.println("由子类实现的输出");
}
@Override
void close() {
System.out.println("由子类具体定义的关闭操作");
}
}
调用
public class Client {
public static void main(String[] args) {
final ConcretClass concretClass = new ConcretClass();
concretClass.display();
}
}
总结
优点
规定了子类所要实现的方法,有一个通用的处理流程
缺点
就是必须要看父类的源代码才知道子类要如何进行实现
本文来自博客园,作者:小鸡小鸡快点跑,转载请注明原文链接:https://www.cnblogs.com/clion/p/14418671.html

浙公网安备 33010602011771号