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("\n\n\n\n");
        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("捉老鼠");
    }
}

运行结果:

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

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

转载于:https://www.cnblogs.com/wanxi/p/6476227.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值