设计模式——模板方法模式
模板方法模式:定义完成一件事情的框架,将一些步骤延迟到子类中(实际上是交由子类去做),使得可以不改变算法结构即可重新定义某些步骤;
角色:抽象类(一个非抽象方法和若干抽象),具体类(继承于抽象类)
优点:使得系统结构组成有层次,有条理;减少代码量,减少不必要的重复代码(抽象类实现的代码不必在每个具体类中实现了)
以我司生产环境中的一个实例来看:
经常需要通过HTTP协议获取数据,并做相应处理:
抽象类:
public abstract class HtmlUpdator { abstract public String getUrl();//获取URL abstract void analyze(String text);//对返回的内容的处理方式 public void update() { ... String resp = HttpUtils.getHTML(getUrl(), 500, 500); if (resp != null) { analyze(text); } } }
实现类:
public class AqiCurrentUpdator extends HtmlUpdator { @Override public String getUrl() { return "http://www.baidu.com"; } @Override void analyze(String text) { ... } }
调用:
new CaiyunAqiCurrentUpdator().update();
模板方法和建造者模式的区别:
一个是行为模式,一个是创建型模式;
建造者目的是创建一个复杂对象,将创建和展现分开;
模板方法是定义一类事情的流程,侧重的是处理方式的抽象。
===========================设计模式系列文章=========================