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();
相关推荐
Larcher1 天前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
咖啡八杯2 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
:mnong2 天前
学习创建结构行为设计模式
设计模式
w_t_y_y2 天前
Agent设计模式(四)多模态融合模式(Multi-Modal Fusion)
设计模式
zhouhui0013 天前
订单状态的 if-else 地狱上线就崩——状态模式的工业级落地
设计模式
geovindu3 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
一只旭宝3 天前
【C++入门精讲22】常见设计模式
c++·设计模式
许彰午3 天前
38_Java设计模式之装饰器模式
java·设计模式·装饰器模式
geovindu3 天前
python: Reactor Pattern
开发语言·python·设计模式·反应器模式
workflower4 天前
基于机器学习的设备故障预测分析方法
人工智能·算法·机器学习·设计模式·语言模型·自然语言处理·重构