继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java设计模式--模板方法模式

喵喔喔
关注TA
已关注
手记 514
粉丝 103
获赞 606

一、概念  

    模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

    比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤。

二、实现

模式中的角色

抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。

具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

抽象类:

?


public abstract class AbstractClass {    // 基本方法    protected abstract void doSomething();    // 基本方法    protected abstract void doAnything();    // 模板方法    public final void templateMethod() {        /*         * 调用基本方法,完成相关的逻辑         */        this.doSomething();        this.doSomething();    }}

具体类:

?


public class ConcreteClass1 extends AbstractClass {    // 基本方法    protected abstract void doSomething() {        // 业务逻辑    }    // 基本方法    protected abstract void doAnything() {        // 业务逻辑    }} public class ConcreteClass2 extends AbstractClass {    // 基本方法    protected abstract void doSomething() {        // 业务逻辑    }    // 基本方法    protected abstract void doAnything() {        // 业务逻辑    }}

测试:

?


public static void main(String[] args) {        AbstractClass class1 = new ConcreteClass1();        AbstractClass class2 = new ConcreteClass2();        // 调用模板方法        class1.templateMethod();        class2.templateMethod();}


三、优缺点

  模板方法多个子类有公有的方法,并且逻辑基本相同时,重复的算法,可以把核心算法设计为模板方法,周边的相关细节功能由各个子类实现
模板方法模式的优点:

1.封装不变部分,扩展可变部分

2.提取公共部分代码,便于维护

3.行为有父类控制,子类实现

模板方法模式的缺点

1.容易带来代码阅读的难度

原文链接:http://www.apkbus.com/blog-780485-77083.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP