• 设计模式之模板模式


        今天我要向大家介绍的设计模式叫做模板模式。模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(摘自菜鸟教程)。模板模式在开发中使用的非常的频繁并且在spring中大量的使用了模板模式。

        1.定义一个抽象模板类:

    //制作饮品
    public abstract class MakeDrink {
        private void boilWater(){
            System.out.println("烧水");
        }
        protected abstract void machining(); //加工
        protected void encapsulation(){
            System.out.println("把做好的饮品倒进杯里");
        }
        
        //防止子类重写
        public final void getDrink(){
            boilWater();
            machining();
            encapsulation();
        }
        
    }

    2.定义具体的饮品类:

    public class TeaDrink extends MakeDrink{
    
        @Override
        protected void machining() {
            System.out.println("加入茶叶");
        }
    
    }
    
    public class OffeeDrink  extends MakeDrink{
    
        @Override
        protected void machining() {
            System.out.println("加入咖啡豆");
        }
    
    }

    3.客户端调用:

    public static void main(String[] args) {
            MakeDrink offeedrink = new OffeeDrink();
            offeedrink.getDrink();
            System.out.println("===========");
            MakeDrink teadrink = new TeaDrink();
            teadrink.getDrink();
        }
    
    
    
    执行结果:
    烧水
    加入咖啡豆
    把做好的饮品倒进杯里
    ===========
    烧水
    加入茶叶
    把做好的饮品倒进杯里

    使用模板模式可以实现代码的复用,但是每个不同的实现都需要一个子类会导致类的数量增加并且继承也使代码耦合在了一起。

  • 相关阅读:
    Linux系统挂载数据盘
    python 路径和文件的遍历
    Markdown 语法手册
    Markdown 语法手册
    Markdown语法说明
    Alpha通道
    图像质量评价之数据库
    Python报错:ImportError: No module named src.data_layer
    history命令
    关于Segmentation fault (core dumped)
  • 原文地址:https://www.cnblogs.com/suyang-java/p/10358007.html
Copyright © 2020-2023  润新知