zoukankan      html  css  js  c++  java
  • 无废话设计模式(12)行为型模式--模板方法模式

    0-前言

      模板方法模式定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中;

               模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些步骤;

    1-实现

    1-1、简单UML图:

     1-2、代码实现

    //1、抽象父类
    abstract  class TestPhone
    {
        public void PowerOn()
        {
            System.out.println("测试开机是否正常");
        }
        public void PowerOff()
        {
            System.out.println("测试关机是否正常");
        }
    
        public void Test()
        {
            System.out.println("开始测试手机----------");
            PowerOn();
            PowerOff();
        }
    }
    
    //2-1、具体类A
    class TestPhoneA extends TestPhone
    {
        @Override
        public void PowerOn()
        {
            System.out.println("空电池下测试插电线开机");
            super.PowerOn();
        }
    }
    
    //2-2、具体类B
    class TestPhoneB extends TestPhone
    {
        @Override
        public void PowerOff()
        {
            System.out.println("测试直接拔电池关机");
            super.PowerOff();
        }
    }

    客户端:

            TestPhone testPhone;
            testPhone = new TestPhoneA();
            testPhone.Test();
    
            testPhone = new TestPhoneB();
            testPhone.Test();

    运行结果:

    2-应用场景简单总结

    1、一次性地实现一个算法不变的部分,而将可变的行为留个子类来实现;

    2、当子类有公共行为可提取到父类中去,而子类有自己的个性化需求时;

  • 相关阅读:
    ES6学习之装饰器
    ES6学习之Class
    ES6学习之Async函数
    ES6学习之Generator函数
    for循环及break和continue的区别
    ES6学习之Iterator和For...of循环
    js检测对象属性
    ES6学习之Promise
    ES6学习之Reflect
    Visual Studio references中的package找不到
  • 原文地址:https://www.cnblogs.com/yanghj/p/13427591.html
Copyright © 2011-2022 走看看