behavior:模板方法模式 (template method
2019-03-10 本文已影响0人
柳源居士
模板方法用abstract 方法来组成一个方法的算法骨架。而在该类的子类实现中,决定骨架方法的具体逻辑。
定义:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
一些框架的生命周期方法,就是用的模板方法模式。
你可以在实现的时候决定使用哪些钩子方法。
类图:
![](https://img.haomeiwen.com/i8387662/3757aad283fa97a0.png)
实现:
package template;
public class Bear extends PutIntoFridge {
@Override
public void prepareThings() {
System.out.println("im a bear");
}
@Override
public void putItIn() {
System.out.println("把我切成2块");
}
}
package template;
public class Elephant extends PutIntoFridge {
@Override
public void prepareThings() {
System.out.println("im a elephant");
}
@Override
public void putItIn() {
System.out.println("把我分成5块");
}
}
package template;
public abstract class PutIntoFridge {
void putSomethingIn(){
prepareThings();
openFridgeDoor();
putItIn();
closeFridgeDoor();
}
public abstract void prepareThings();
public abstract void putItIn();
private void openFridgeDoor(){
System.out.println("open the door");
}
private void closeFridgeDoor(){
System.out.println("closed the door");
}
}
package template;
public class TestTemplate {
public static void test(){
Bear bear=new Bear();
Elephant elephant=new Elephant();
bear.putSomethingIn();
elephant.putSomethingIn();
}
}