极速理解设计模式系列:20.模板方法模式(Template Method Pattern)

简介:

四个角色:抽象类(AbstractClass)、具体子类(ConcreateClass)、客户端(Client) 

        抽象类(AbstractClass):定义抽象原始操作让其子类可重定义,并且添加一个模板方法定义算法骨架模板,调用原始操作

        具体子类(ConcreateClass):实现原始操作方法。

        客户端(Client) :实例化具体子类,然后调用模板方法执行子类的原始操作。

实现思路:在客户端实例化具体子类,通过子类实例调用模板方法来按照一定算法执行子类定义的原始操作。

类图:

应用场景:一个人的生活。

分析:每个人的生活习惯不一样,但是基本规律是不会改变的,都是起床、吃饭、睡觉,在本实例中生活方法是一个模板,然后每个人作为子类可以有不同的起床、吃饭、睡觉时间和方式。

        下面我们在控制台程序去演示一下如何使用Template Method Pattern:

        一、抽象类(AbstractClass):

复制代码
    //抽象类(AbstractClass)
abstract class AbsPeople
{
// 起床
abstract public void GetUp();

// 吃饭
abstract public void Eat();

// 睡觉
abstract public void Sleep();

// 生活模板方法
public void Live()
{
GetUp();
Eat();
Sleep();
}
}
复制代码

        二、具体子类(ConcreateClass):

复制代码
    //具体子类(ConcreateClass)
class ConPeopleJack:AbsPeople
{
public override void GetUp()
{
Console.WriteLine("Jack 9点起床了");
}

public override void Eat()
{
Console.WriteLine("Jack 今天吃中式快餐餐。");
}

public override void Sleep()
{
Console.WriteLine("Jack 23点晚晚的回家睡觉。");
}
}


//具体子类(ConcreateClass)
class ConPeopleMike : AbsPeople
{
public override void GetUp()
{
Console.WriteLine("Mike 今天11点起床了。");
}

public override void Eat()
{
Console.WriteLine("Mike 今天吃西餐。");
}

public override void Sleep()
{
Console.WriteLine("Mike 19点早早的睡觉。");
}
}
复制代码

        三、 客户端(Client):

复制代码
    //客户端(Client)
class Program
{
static void Main(string[] args)
{
AbsPeople jack = new ConPeopleJack();
jack.Live();
AbsPeople mike = new ConPeopleMike();
mike.Live();

Console.ReadLine();
}
}
复制代码

       如需源码请点击 TemplateMethodPattern.rar  下载。

本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/11/29/2256139.html,如需转载请自行联系原作者


相关文章
|
6月前
|
设计模式 算法
设计模式9 - 模板方法模式【Template Method Pattern】
设计模式9 - 模板方法模式【Template Method Pattern】
21 0
|
6月前
|
设计模式 算法 Java
设计模式~模板方法模式(Template method)-10
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: (6)Servlet Api &
32 0
|
6月前
|
设计模式
设计模式5 - 工厂方法模式【Factory Method Pattern】
设计模式5 - 工厂方法模式【Factory Method Pattern】
20 0
|
设计模式 算法 Java
设计模式学习(六):Template Method模板方法模式
模板的原意是指带有镂空文字的薄薄的塑料板。只要用笔在模板的镂空处进行临摹,即使是手写也能写出整齐的文字,但是具体写出的文字是什么感觉则依赖于所用的笔。如果使用签字笔来临摹,则可以写出签字似的文字;如果使用铅笔来临摹,则可以写出铅笔字;而如果是用彩色笔临摹,则可以写出彩色的字。但是无论使用什么笔,文字的形状都会与模板上镂空处的形状一致。
100 0
设计模式学习(六):Template Method模板方法模式
|
存储 算法 Java
行为型模式 - 模板模式(Template Pattern)
行为型模式 - 模板模式(Template Pattern)
|
算法 设计模式 Java
设计模式:模板方法模式(Template Method)
 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。一次性的实现一个算法的不变部分,并将可变的行为留给子类来实现。
1050 0
|
设计模式 算法 Java
模板方法设计模式(Template Pattern)(下)
模板方法设计模式(Template Pattern)(下)
91 0
模板方法设计模式(Template Pattern)(下)
|
设计模式 算法 Java
模板方法设计模式(Template Pattern)(上)
模板方法设计模式(Template Pattern)(上)
104 0
模板方法设计模式(Template Pattern)(上)
|
设计模式 JSON 算法
【愚公系列】2021年12月 二十三种设计模式(二十二)-模板方法模式(Template Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(二十二)-模板方法模式(Template Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(二十二)-模板方法模式(Template Method Pattern)
|
设计模式 数据库
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)