设计模式-模板方法模式

概述

模板方法模式是一种行为型的设计模式,主要组成部分是抽象类子类,这个模式在实际开发中是非常常用的,在框架设计中是很重要的,将通用的抽象进行抽象,然后在具体的类的时候继承抽象方法,实现对应的功能即可。模板如下


例子:现在有很多的游戏角色,有攻击,血量,防御等属性,主要是技能不同,请抽象实现。

模板方法模式

cs 复制代码
internal class Program
{
    private static void Main(string[] args)
    {
        Priest priest = new Priest();
        priest.Skill();
    }
    public abstract class GameCharacter//抽象的基类
    {
        public abstract string Name { get; }//名字
        public abstract uint HP { get; }//血量
        public abstract uint Attack { get; }//攻击
        public abstract uint Defense { get; }//防御
        public abstract int CriticalStrike { get; }//暴击
        public abstract void Skill();//技能
    }
    public class Soldier : GameCharacter//战士
    {
        public override string Name => "战士";

        public override uint HP => 100;

        public override uint Attack => 20;

        public override uint Defense => 15;

        public override int CriticalStrike => 24;

        public override void Skill()
        {
            Console.WriteLine("防御强化");
        }
    }
    public class Master : GameCharacter//法师
    {
        public override string Name => "法师";

        public override uint HP => 92;

        public override uint Attack => 10;

        public override uint Defense => 12;

        public override int CriticalStrike => 33;

        public override void Skill()
        {
            Console.WriteLine("火球术");
        }
    }
    public class Priest : GameCharacter//牧师
    {
        public override string Name => "牧师";

        public override uint HP => 60;

        public override uint Attack => 9;

        public override uint Defense => 7;

        public override int CriticalStrike => 12;

        public override void Skill()
        {
            Console.WriteLine("回复术");
        }
    }
}

输出结果

回复术

相关推荐
木昜先生2 分钟前
知识点:深入理解 JVM 内存管理与垃圾回收
java·jvm·后端
前端大白话5 分钟前
Vue2和Vue3语法糖差异大揭秘:一文读懂,开发不纠结!
javascript·vue.js·设计模式
115432031q5 分钟前
基于SpringBoot+Vue实现的旅游景点预约平台功能十三
java·前端·后端
战族狼魂9 分钟前
基于SpringBoot+PostgreSQL+ROS Java库机器人数据可视化管理系统
java·spring boot·postgresql
前端大白话10 分钟前
JavaScript中`Symbol.for()`和`Symbol()`的区别,在创建全局唯一的`Symbol`值时如何选择使用?
前端·javascript·设计模式
半个脑袋儿15 分钟前
Java线程控制: sleep、yield、join深度解析
java
小智疯狂敲代码20 分钟前
Spring MVC-DispatcherServlet 的源码解析
java·面试
int0x0320 分钟前
Java中的内存"瘦身术":揭秘String Deduplication
java
半个脑袋儿21 分钟前
Java日期格式化中的“YYYY”陷阱:为什么跨年周会让你的年份突然+1?
java·后端
CHQIUU34 分钟前
Java 设计模式心法之第25篇 - 中介者 (Mediator) - 用“中央协调”降低对象间耦合度
java·设计模式·中介者模式