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();
相关推荐
ClinicTech1 小时前
高速冷冻离心机的温控系统与安全保护逻辑解析
设计模式·架构·健康医疗·设计语言
GISMagic6 小时前
3.《设计模式》:软件设计与解耦能力提炼
设计模式·ai coding
染指11106 小时前
131.Agent-Agent设计模式-MAS多智能体系统(Multi-Agent-System)
人工智能·设计模式·langchain·agent·agents
ShyanZh21 小时前
【Python3基础】13-Python 常用设计模式
开发语言·python·设计模式
YYYing.1 天前
【设计模式系列 (五) 】原型模式
开发语言·后端·设计模式·原型模式·c/c++
长按助力退休2 天前
设计模式实战,这 5 个最常用
设计模式
Carl_奕然2 天前
【智能体】Agent的四种设计模式之:Multi-Agent Collaboration
设计模式
Lost of 程序猿2 天前
建造者模式实战:告别“十参数构造函数“的数据导出任务
后端·设计模式·c#·asp.net
SL_staff2 天前
合规性折旧:当知识资产因主权缺位在审计中‘功能性清零’
java·设计模式·开源
Zane19942 天前
工厂方法一定比简单工厂高级?三种工厂模式到底该怎么选
设计模式