java 设计模式之三-模版模式

新的一天,天气不错,坚持、努力、加油!

今天想说的是模版模式,其实这个模式大家都常用,只是可能不知道还有“模版模式”这么一个称呼而已,使用继承的方式来实现,父类为模版,子类根据不同的特点来继承和修改。魔兽世界里每个职业都有三个天赋,比如法师就有火法、奥法、冰法,不管你是什么法师,你都有一些法师的基础技能,比如传送门和造食术等,但是当你选择了不同的天赋,就会拥有新的且必须是该天赋才拥有的特殊的技能。比如奥法的减速,冰法的深度冻结,火法的龙息术等。这里法师是基类,冰法、火法和奥法是子类,就是一种模版模式的实现。

这里,有一个法师基类,会造食术和开传送门,还分别有三个子类:火法,奥法和冰法


package plate;

public class Mage {

    /**
     * DOC 法师都会造食术
     */
    public void cook() {
        System.out.println("I am cooking...");
    }

    /**
     * DOC 法师都会开传送门,30G一次,你懂的.
     */
    public void goAnyWhere() {
        System.out.println("going some where");
    }

}

package plate;

public class IceMage extends Mage {

    /**
     * DOC 冰法会深度冻结.
     */
    public void deepFreeze() {
        System.out.println("I will freeze you!");
    }

}


package plate;

public class FireMage extends Mage {

    /**
     * DOC 火法会龙息术.
     */
    public void dragonBreathe() {
        System.out.println("I will burn you!");
    }
}

package plate;

public class ArcaneMage extends Mage {

    /**
     * DOC 奥法会减速技能.
     */
    public void slowDown() {
        System.out.println("I will let you slow down!");
    }
}

测试类:

package test;

import plate.ArcaneMage;
import plate.FireMage;
import plate.IceMage;

public class PlateTest {

    public static void main(String[] args) {
        FireMage fireMage = new FireMage();
        IceMage iceMage = new IceMage();
        ArcaneMage arcaneMage = new ArcaneMage();
        System.out.println("-------------火法-----------");
        fireMage.cook();
        fireMage.dragonBreathe();
        System.out.println("-------------冰法-----------");
        iceMage.goAnyWhere();
        iceMage.deepFreeze();
        System.out.println("-------------奥法-----------");
        arcaneMage.cook();
        arcaneMage.slowDown();
    }

}

测试结果:

-------------火法-----------
I am cooking...
I will burn you!
-------------冰法-----------
going some where
I will freeze you!
-------------奥法-----------
I am cooking...
I will let you slow down!



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值