zoukankan      html  css  js  c++  java
  • 设计模式之模板模式

        今天我要向大家介绍的设计模式叫做模板模式。模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(摘自菜鸟教程)。模板模式在开发中使用的非常的频繁并且在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();
        }
    
    
    
    执行结果:
    烧水
    加入咖啡豆
    把做好的饮品倒进杯里
    ===========
    烧水
    加入茶叶
    把做好的饮品倒进杯里

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

  • 相关阅读:
    2015PPTV校招笔试详解
    2015华数校招笔试详解
    2015我的校招之路
    2015美团校招笔试试题
    关于联想超极本装入Ubuntu系统无法开启无线硬件开关的解决
    RabbitMQ
    office 2016 for mac 下拉框 无法展开问题
    mac 下 tomcat7的安装
    mac 10.11.6,Xcode8下,ruby2.3安装,Cocoapods安装~
    学习的学习的方法
  • 原文地址:https://www.cnblogs.com/suyang-java/p/10358007.html
Copyright © 2011-2022 走看看