栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

模板方法设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模板方法设计模式

模板方法设计模式在实际开发中是一种使用非常广泛的设计模式,也是一种非常重要的思想。其核心内容为:通过定义一个模板类,在模板类中规定其整体的骨架并确定哪些方法是允许子类去重写,哪些不允许子类重写或者哪些必须子类重写,其目的是保证其核心算法不被破坏。定义完模板类后,写出具体的子类去继承模板类并按规定好的框架来完成子类的定义。

模板方法设计模式适用于算法的整体步骤很固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。

举个例子,在炒菜的时候步骤都是一样的,区别就是放的菜,放的调料不同,这个时候就可以设计一套模板,按照这个模板去炒菜

package day726.a;


public abstract class AbstractCook {
//    倒油
    public final void PourOil(){
        System.out.println("倒入油");
    }
//    倒菜
    public abstract void PourVegetables();
//    倒调料
    public abstract void PourSeasoning();
//    翻炒
    public final void StirFry(){
        System.out.println("翻炒到菜熟");
    }
//    起锅
    public final void Boil(){
        System.out.println("菜炒熟了,起锅!!");
    }
    public final void cook(){
        PourOil();
        PourVegetables();
        PourSeasoning();
        StirFry();
        Boil();
    }
}
package day726.a;


public class Cook extends AbstractCook{

    @Override
    public void PourVegetables() {
        System.out.println("倒入白菜");
    }

    @Override
    public void PourSeasoning() {
        System.out.println("放点辣椒");
    }

}
package day726.a;


public class Test {
    public static void main(String[] args) {
        AbstractCook cook=new Cook();
        cook.cook();
    }
}

在上述案例,炒菜的步骤是一样的,我不想打乱炒菜的步骤,我就用final关键字修饰,子类就不能重写,有些具体的操作不同,我用abstract关键字修饰,定义为抽象方法,由子类去实现。

注:在定义模板类中的方法时,需要慎用修饰词:final、abstract。final用来可以用来定义那些不想被子类重写的方法,abstract则可以用来定义那些需要子类去具体实现的方法。

通过使用模板方法模式,一方面提高了代码的复用性,另一方面还可以利用面向对象的多态性,在运行时选择一种具体子类,实现完整的模板方法,提高系统的灵活性和可扩展性。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号