设计模式のTemplatePattern(模板模式)----行为模式

本质:提取公共,创建各异(”一中各表,不做选择”)

一、产生背景

在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下例子,每个对象都写Stay()方法,这样在每个类中都有很多相同的代码,此时,我们需要用到模板设计模式,来解决这个问题

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

二、实现方式

是把相同的部分抽象出来到抽象类中去定义,具体子类来继承抽象类,并实现抽象类中的抽象方法,从而达到具体实现的不同部分,这个思路也正式模板方法的实现精髓所在

也就是常见类与对象的继承问题

三、实例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TemplatePattern
{
    class Program
    {
        static void Main(string[] args)
        {
            People p = new Chinese();
            People p2 = new English();
            Console.ReadLine();

        }


        public abstract class People
        {
            public People()
            {
                Stay();
                Console.WriteLine("我们是人类");
                Country();
                Say();
            }

            public void Stay()
            {
                Console.WriteLine("我住在地球");
            }

            public abstract void Country();

            public abstract void Say();
        }
        public class Chinese : People
        {
            public override void Country()
            {
                Console.WriteLine("我是中国人");
            }
            public override void Say()
            {
                Console.WriteLine("我们说中文");
            }
        }
        public class English : People
        {
            public override void Country()
            {
                Console.WriteLine("We are English");
            }
            public override void Say()
            {
                Console.WriteLine("We speak English");
            }
        }
    }
}

四、模式分析

优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。

缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

 

posted @ 2018-04-08 15:27  卖雨伞的小男孩  阅读(135)  评论(0编辑  收藏  举报