Unity23种设计模式之 模板方法模式

1.什么是模板方法模式?

核心思想:在父类中定义算法的骨架流程,将某些步骤延迟到子类中实现。

2.实战实例:UI窗口打开流程

项目中所有UI窗口打开流程基本一致:

(1)加载资源

(2)初始化数据

(3)绑定事件

(4)播放打开动画

但是 每个窗口的数据初始化不同、事件绑定不同、动画可能不一样

3.代码演示

cs 复制代码
public abstract class UIWindow
{
    // 模板方法:定义整体流程
    public void Open()
    {
        LoadAsset();
        InitData();
        BindEvent();
        PlayOpenAnim();
    }

    protected virtual void LoadAsset()
    {
        Debug.Log("加载UI资源");
    }

    // 必须由子类实现
    protected abstract void InitData();

    protected abstract void BindEvent();

    // Hook:子类可选覆盖
    protected virtual void PlayOpenAnim()
    {
        Debug.Log("播放默认打开动画");
    }
}

具体窗口实现

cs 复制代码
public class BagWindow : UIWindow
{
    protected override void InitData()
    {
        Debug.Log("初始化背包数据");
    }

    protected override void BindEvent()
    {
        Debug.Log("绑定背包按钮事件");
    }

    protected override void PlayOpenAnim()
    {
        Debug.Log("播放背包弹出动画");
    }
}
cs 复制代码
public class ShopWindow : UIWindow
{
    protected override void InitData()
    {
        Debug.Log("初始化商店商品列表");
    }

    protected override void BindEvent()
    {
        Debug.Log("绑定购买按钮事件");
    }
}

使用

cs 复制代码
UIWindow window = new BagWindow();
window.Open();
相关推荐
workflower29 分钟前
装备企业的 AI 路线图
人工智能·深度学习·机器学习·设计模式·机器人
geovindu10 小时前
CSharp:Chain of Responsibility Pattern
开发语言·后端·设计模式·c#·.net·责任链模式·行为模式
梓仁沐白12 小时前
【Agent 设计模式】多智能体协作
microsoft·设计模式·php
努力学习的廖同学13 小时前
前端进阶-设计模式
设计模式
workflower1 天前
情境感知系统
人工智能·机器学习·设计模式·自然语言处理·机器人
咖啡八杯2 天前
设计模式中的原则
设计模式·接口隔离原则·里氏替换原则·开闭原则·合成复用原则·单一职责原则
安冬的码畜日常2 天前
【工欲善其事】深入理解 Node.js 带并发上限的异步任务批量执行逻辑
javascript·设计模式·node.js·ai编程·异步编程·并发执行
AI大法师2 天前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
晚安code2 天前
干掉成山的 if-else:工厂造、策略选,一文讲透两个模式的配合
后端·设计模式
workflower3 天前
从幻觉,到现实
人工智能·深度学习·机器学习·设计模式·机器人