android设计模式二十三式(十四)——模板方法模式(Template Method)

模板方法模式

既然叫做模板方法,从字面上大致就知道,应该是所有的实现有共性。抽取可共性的部分,个性的部分由具体实现类来实现。

举个栗子:

我们给客服打电话办理业务,要先拨号码,然后办理业务,最后要给客服打分,那么,共性的拨号和评价部分,就可以放在一个父类中,而办理的业务由于是不同的客户有不同的业务,所有由顾客自己选择。

 

 

/**
 * @author: hx
 * @Time: 2019/5/17
 * @Description: Business
 */
public abstract class Business {

    public void dealWithService(){
        System.out.println("拨打号码");
        operation();
        System.out.println("打分评价");
    }

    /**
     * 办理业务
     */
    protected abstract void operation();
}

/**
 * @author: hx
 * @Time: 2019/5/17
 * @Description: ChangeBusiness
 */
public class ChangeBusiness extends Business {
    @Override
    protected void operation() {
        System.out.println("修改业务");
    }
}

/**
 * @author: hx
 * @Time: 2019/5/17
 * @Description: CheckBalance
 */
public class CheckBalance extends Business {
    @Override
    protected void operation() {
        System.out.println("查询余额");
    }
}

打个电话办个业务

public static void main(String[] args){
    Business business = new CheckBalance();
    Business business2 = new ChangeBusiness();
    business.dealWithService();
    business2.dealWithService();
}

输出结果:
拨打号码
查询余额
打分评价
拨打号码
修改业务
打分评价

模板模式的优点

 (1)具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。

 (2)代码复用的基本技术,在数据库设计中尤为重要。

 (3)存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。

不足

    每个不同的实现都需要定义一个子类,会导致类的个数增加,系统更加庞大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值