您的位置:首页 > 其它

设计模式-模板方法模式

2017-11-20 23:51 127 查看
模板方法模式:定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得一个子类可以在不改变一个算法的结构即可重新定义算法中的某些特定的结构。



/**
*
* @author yanjy
* @date 2017/11/20
*/
public abstract class TemplateClass {
protected abstract void primivateOperation1();
protected abstract void primivateOperation2();

public void templateMethod() {
primivateOperation1();
primivateOperation2();

System.out.println("this is template method!");
}
}

/**
*
* @author yanjy
* @date 2017/11/20
*/
public class ConcreteClass extends TemplateClass {
@Override
protected void primivateOperation1() {
System.out.println("this is primivateOperation1");
}

@Override
protected void primivateOperation2() {
System.out.println("this is primivateOperation1");
}
}


模板方法的使用可以从两个方式出发:

1.在开发的初期能够对需求和项目的整体流程有个较为具体的把握,这时可以将流程抽象化,制定出一个较为完整的算法骨架,对其中可能会产生变化的部分下放到子类中去实现,便能实现再不改变算法骨架的情况下,动态实现新增的业务逻辑。

例如:保险公司买保险的整体流程大致分为设计保险,宣传保险,售卖保险,兑现保险等步骤,在这个过程中保险销售的流程基本不变,变化的是保险的种类和所能够带来的好处,我们就可以将具体保险规则的实现下方到子类中去。

2. 在开发的过程中面对重复的代码和流程,做出及时的分析和判断,从而的出较为普遍的流程和步骤,进而对共有的步骤和方法进行抽象,将步骤中的某些特定的步骤下放到子类中去实现。

例如:我们在不断的售卖保险的过程中,会发现多数险种的售卖方式不尽相同,差异体现在不同险种所能够带来的预期收益,因此我们就可以进行算法骨架的提取,与子类的分化了。

模板模式的优点:

1.完好的遵守的开放封闭,单一职责和依赖倒转三个设计原则。

开放封闭:体现在新增业务逻辑只需要增加对应的子类,无需修改已有代码。
单一职责:父类负责骨架,子类负责特定逻辑 降低了父类子类之间的耦合度。
依赖倒转:父类通过抽象建造算法骨架,不依赖于子类的实现,子类依赖于父类抽象出的特定步骤,从而分离了父子类之间的细节依赖。


缺点:

1.当业务增加频繁的情况下会产生较多的子类,但这也是无可避免的。

2.当业务系统繁杂到一定程度的时候,再去做抽象的话,会导致对源代码的大量修改。所以早发现早修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式