设计模式-模板方法模式

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

这里写图片描述


/**
 *
 * @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.当业务系统繁杂到一定程度的时候,再去做抽象的话,会导致对源代码的大量修改。所以早发现早修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值