• Java设计模式之行为型模式(模板模式)


    模板模式

    1、概述

    ①定义

    模板模式使用一个抽象类将各个具体类中相同或相近的成分抽取出来,并让各个具体类继承该抽象类,共享相同或相近的成分。具体类通过继承抽象类也可以重写模板类的方法。

    ②结构

    UML图:

    这里写图片描述

    • Template为模板类,它是一个抽象类,集成了ConcreteClassA、ConcreteClassB、ConcreteClassC的相同部分:publicField属性,publicMethod()方法。

    • ConcreteClassA、ConcreteClassB、ConcreteClassC为具体类,它们之间存在相同和不同的属性和方法。

    2、实例分析

    场景:

    定义一个抽象类Animal,Animal中有eat()、sleep()方法。定义具体类Dog继承Animal类,并在Dog中定义shout()、lookHome()方法;定义具体类Cat继承Animal类,并在Cat中定义sound()、catchMouse()方法。

    UML图:

    这里写图片描述

    代码:

    /**
     * @author Hanlin Wang
     */
    
    public class TemplateMode {
        public static void main(String[] args) {
            Dog dog = new Dog();
            Cat cat = new Cat();
    
            dog.eat();
            dog.shout();
            dog.lookHome();
            dog.sleep();
    
    
            System.out.println("
    
    
    
    ");
            cat.eat();
            cat.sound();
            cat.catchMouse();
            cat.sleep();
        }
    }
    
    abstract class Animal{
        public void eat(){
            System.out.println("---吃---");
        }
        public void sleep(){
            System.out.println("---睡---");
        }
    }
    
    class Dog extends Animal{
        public void shout(){
            System.out.println("汪..汪..");
        }
        public void lookHome(){
            System.out.println("看家");
        }
    }
    
    class Cat extends Animal{
        public void sound(){
            System.out.println("喵..");
        }
        public void catchMouse(){
            System.out.println("捉老鼠");
        }
    }

    运行结果:

    —吃—
    汪..汪..
    看家
    —睡—

    —吃—
    喵..
    捉老鼠
    —睡—

  • 相关阅读:
    推广项目难点-隐藏IP上
    推广项目难点之数据清洗
    推广项目难点之数据随机分发
    推广项目新架构测试报告
    notepad++正则表达式
    MySQL查询时构建自增ID
    ASP.NET MVC页面UI之多级数据选择UI(行业信息、专业信息、职位信息的选择)
    DesignMode_EasyFactory
    Arithmetic_Thinking -- greedy algorithm
    JDBC--SQL(DDL)
  • 原文地址:https://www.cnblogs.com/wanxi/p/6476227.html
Copyright © 2020-2023  润新知