zoukankan      html  css  js  c++  java
  • 极速理解设计模式系列: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  下载。

  • 相关阅读:
    "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java.library.path
    Cookie的简单使用
    转发与重定向
    JSON 在Ajax数据交换中的简单运用
    Word/Excel/PPT 2016商务办公从入门到精通
    高性能MySQL(第3版)
    精通CFD工程仿真与案例实战 FLUENT GAMBIT ICEM CFD Tecplot 第2版
    HTML、CSS和JavaScript入门经典(第2版)
    C#图解教程(第4版)
    巧学巧用DreamweaverCS6、FlashCS6、FireworksCS6网站制作
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2256139.html
Copyright © 2011-2022 走看看