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();
相关推荐
码匠许师傅21 小时前
【设计模式精讲】24.观察者模式(Observer)
c++·观察者模式·设计模式·uml
小程故事多_801 天前
从快速迭代到稳定存续,Google五大设计模式重构长效AI智能体落地逻辑
人工智能·设计模式·重构
码匠许师傅2 天前
【设计模式精讲】22.中介者模式(Mediator)
c++·设计模式·软件工程·uml·中介者模式
2401_868534782 天前
网规备考_2.4 路由协议
c++·设计模式
cpp_learner2 天前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
c++·设计模式
码匠许师傅2 天前
【设计模式精讲】23.备忘录模式(Memento)
c++·设计模式·软件工程·uml·备忘录模式
新知图书3 天前
第8章 多智能体协同
人工智能·设计模式·智能体
京师20万禁军教头3 天前
39面向对象(高级)-设计模式
java·开发语言·设计模式
新知图书3 天前
3.5 智能体设计模式1:反应式智能体与自动导航案例
人工智能·设计模式·智能体
码匠许师傅3 天前
【设计模式精讲】21.迭代器模式(Iterator)
c++·设计模式·rpc·迭代器模式·软件工程·uml