在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
实际上这种模式就是向你介绍了为什么要使用抽象类。
class Program
{
static void Main(string[] args)
{
Camera one = new CameraOne();
one.SnapShot();
Console.WriteLine("===========");
Camera two = new CameraTwo();
two.SnapShot();
Console.Read();
}
}
abstract class Camera
{
public abstract void Open();
public abstract void Close();
public void SnapShot()
{
Open();
Console.WriteLine("拍照");
Open();
}
}
class CameraOne : Camera
{
public override void Close()
{
Console.WriteLine("一号机关闭");
}
public override void Open()
{
Console.WriteLine("一号机打开");
}
}
class CameraTwo : Camera
{
public override void Close()
{
Console.WriteLine("二号机关闭");
}
public override void Open()
{
Console.WriteLine("二号机打开");
}
}
类图
优点与缺点
模板模式的优点:
- 实现了代码复用
- 能够灵活应对子步骤的变化,符合开放-封闭原则
模板模式的缺点:
- 因为引入了一个抽象类,如果具体实现过多的话,需要用户或开发人员需要花更多的时间去理清类之间的关系。
本文主要借鉴了《Gof设计模式》