建设网站公司那家好,中国十大关键词,怎么给网站做支付接口,天津网站优化公司价格模板方法模式
前言
行为型设计模式 关注对象和行为的分离。
关于父类与子类 调用时候 具体调用的哪一个#xff1f;
普通方法调用编译时决定左边决定抽象/虚方法调用运行时决定右边决定
介绍
设计模式定义案例模板方法模式父类 定义了业务流程#xff0c;其中一部分 延…模板方法模式
前言
行为型设计模式 关注对象和行为的分离。
关于父类与子类 调用时候 具体调用的哪一个
普通方法调用编译时决定左边决定抽象/虚方法调用运行时决定右边决定
介绍
设计模式定义案例模板方法模式父类 定义了业务流程其中一部分 延迟到子类自己去完成 通过虚方法/抽象方法 和框架搭建很像定义流程实现了通用部分可变部分传下去给子类 不同年龄段的模特走秀 每个不同年龄段模特 show的内容不同 其中小朋友年龄段的模特 上台后有特殊pose
问题堆积在哪里解决办法解释show的内容不同 小朋友有特殊pose父类中 定义了通用的流程 抽象方法其中 show的部分必须有 所以用抽象 虚函方法其中 特殊pose部分可有可无 所以用虚方法感觉把类当做函数其中虚方法/抽象方法 就是变量 类图 代码例子
BaseModel
using UnityEngine;public abstract class BaseModel
{public void Show(){// 上台Up();// 摆pose 虚方法 有默认的pose 也可以Pose();// 开始show 抽象方法不同的模特有不同的show过程Begin();// 下台Down();}// 开始 showpublic abstract void Begin();// 摆 Posepublic virtual void Pose(){Debug.Log(Pose1);}private void Up(){Debug.Log(上台);}private void Down(){Debug.Log(下台);}
}KidModel
using UnityEngine;public class KidModel : BaseModel
{public override void Begin(){Debug.Log(小朋友模特开始 show);}// 小朋友自己设计一个posepublic override void Pose(){Debug.Log(我是可爱的天使);}
}AdultModel
using UnityEngine;public class AdultModel : BaseModel
{public override void Begin(){Debug.Log(成年模特开始 Show);}
} OldModel
using UnityEngine;public class OldModel : BaseModel
{public override void Begin(){Debug.Log(大龄模特开始show);}
}
使用
using UnityEngine;public class Emcee : MonoBehaviour
{void Start(){Debug.Log(---------------------------成年模特);{BaseModel model new AdultModel();model.Show();}Debug.Log(---------------------------小孩模特);{BaseModel model new KidModel();model.Show();}Debug.Log(---------------------------老年模特);{BaseModel model new OldModel();model.Show();}}}结果