天天看點

Java設計模式之行為型模式(模闆模式)模闆模式

模闆模式

1、概述

①定義

模闆模式使用一個抽象類将各個具體類中相同或相近的成分抽取出來,并讓各個具體類繼承該抽象類,共享相同或相近的成分。具體類通過繼承抽象類也可以重寫模闆類的方法。

②結構

UML圖:

Java設計模式之行為型模式(模闆模式)模闆模式
  • 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圖:

Java設計模式之行為型模式(模闆模式)模闆模式

代碼:

/**
 * @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