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();
        }
    
    
    
    执行结果:
    烧水
    加入咖啡豆
    把做好的饮品倒进杯里
    ===========
    烧水
    加入茶叶
    把做好的饮品倒进杯里

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

  • 相关阅读:
    读书笔记Review: HTTP and HttpServletRequest
    读书笔记JavaScript Patterns_chapter6_Code Reuse Patterns
    读书笔记Review: servlet lifecycle and API
    读书笔记Review: HttpServletResponse
    简单分析Ext.ComponentMgr 函数
    翻译 Extjs in action中的Event flow in the DOM
    struts中的web.xml
    读书笔记_Extjs In Action_The Component Life Cycle
    web service中的事件
    Remoting学习笔记
  • 原文地址:https://www.cnblogs.com/suyang-java/p/10358007.html
Copyright © 2011-2022 走看看