书写代码必须符合高质量高性能要求,这也是能够在视觉上和其他程序员拉开差距的技能,同时也是一个优秀程序员的基本要求。
何为高质量: 代码具备可维护性,可读性,可扩展性,灵活性,简洁性,可复用性, 可测试性。
何为高性能: 代码能尽可能的提高处理效率。
如何写高质量高性能代码: 首先要做的就是精通设计模式,设计原则,掌握各种算法以及了解硬件底层相关内容。
今天我们来说一说模板方法模式。
1模板方法模式
模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。
public abstract class AbstractClass {
public final void templateMethod() {
method1();
method2();
}
protected abstract void method1();
protected abstract void method2();
}
public class ConcreteClass1 extends AbstractClass {
@Override
protected void method1() {}
@Override
protected void method2() {}
}
}
public class ConcreteClass2 extends AbstractClass {
@Override
protected void method1() {}
@Override
protected void method2() {}
}
AbstractClass demo = ConcreteClass1();
demo.templateMethod();
模板方法模式最大的两个作用就是复用和扩展。
复用:
模板模式把一个算法中不变的流程抽象到父类的模板方法templateMethod()中,将可变的部分method1()、method2()留给子类ContreteClass1和ContreteClass2来实现。所有的子类都可以复用父类中模板方法定义的流程代码。
扩展:
并不是指代码的扩展性,而是指框架的扩展性,有点类似我们之前讲到的控制反转,基于这个作用,模板模式常用在框架的开发中,让框架用户可以在不修改框架源码的情况下,定制化框架的功能。我们通过Junit TestCase、Java Servlet两个例子来解释一下。 比如,HttpServlet的service()方法就是一个模板方法,它实现了整个HTTP请求的执行流程,doGet()、doPost()是模板中可以由子类来定制的部分。实际上,这就相当于Servlet框架提供了一个扩展点(doGet()、doPost()方法),让框架用户在不用修改Servlet框架源码的情况下,将业务代码通过扩展点镶嵌到框架中执行。
如果需要带注释的spring源码或者了解更多行业技能请关注微信公众号 码农本农