概述参考请看 参考博客
1、模板方法模式原型
每次吃饭都包含点单、吃东西、买单几个步骤,点单和买单大同小异,最大的区别在于吃什么?
在模板方法模式中,把点单和买单的实现放在父类中。不同吃东西的具体实现则放在子类中。
模板方法模式原型UML图
模板方法模式原型代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 模板方法模式
/// </summary>
public class TemplateMethodMode : MonoBehaviour
{
private void Start()
{
People northPeople = new NorthPeople();
northPeople.Eat();
People southPeople = new SouthPeople();
southPeople.Eat();
}
}
public abstract class People
{
public void Eat()
{
OrderFood();
EatFood();
PayBill();
}
private void OrderFood()
{
Debug.Log("点餐");
}
/// <summary>
/// 吃饭时,不同地区的人吃不同的东西
/// </summary>
protected abstract void EatFood();
private void PayBill()
{
Debug.Log("结账");
}
}
public class NorthPeople : People
{
protected override void EatFood()
{
Debug.Log("我要吃面条!!!");
}
}
public class SouthPeople : People
{
protected override void EatFood()
{
Debug.Log("我要吃米饭!!!");
}
}
模板方法模式简单又常用,理解了原型例子后,基本就能写的出来了。
2、模板方法模式优缺点
优点
- 符合开闭原则。
- 提高了代码复用率。
- 提高了扩展性
缺点
- 增加了理解难度