zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记4——模版方法模式

    模板方法是一种常见的设计模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    UML图:

     具体实现代码:

    namespace TemplateMethod
    {
        class Program
        {
            static void Main(string[] args)
            {
                AbstractClass A = new ConcreteClassA();
                A.TemplateMethod();
                AbstractClass B = new ConcreteClassB();
                B.TemplateMethod();
                Console.ReadKey();
            }
        }
    
        public abstract class AbstractClass
        {
            public abstract void PrimitiveOperation1();
            public abstract void PrimitiveOperation2();
    
            public void TemplateMethod()
            {
                PrimitiveOperation1();
                PrimitiveOperation2();
                Console.WriteLine("");
            }
        }
    
        class ConcreteClassA : AbstractClass
        {
            public override void PrimitiveOperation1()
            {
                Console.WriteLine("具体类A.方法1实现");
            }
    
            public override void PrimitiveOperation2()
            {
                Console.WriteLine("具体类A.方法2实现");
            }
        }
    
        class ConcreteClassB : AbstractClass
        {
            public override void PrimitiveOperation1()
            {
                Console.WriteLine("具体类B.方法1实现");
            }
    
            public override void PrimitiveOperation2()
            {
                Console.WriteLine("具体类B.方法2实现");
            }
        }
    }

     模版方法模式的特点:

    模版方法模式是通过把不变的行为搬移到父类,去除子类中的重复代码来体现它的优势。

    模版方法模式就是提供了一个很好的代码复用平台。

    当不变的和可变的行为在方法的子类实现中混合在一起的时候, 不变的行为就会在子类中重复出现。我们通过模版方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

  • 相关阅读:
    第01组 每周小结(3/3)
    第01组 每周小结(2/3)
    第01组 每周小结 (1/3)
    第01组 Beta冲刺总结
    第01组 Beta冲刺 (5/5)
    第01组 beta冲刺(4/5)
    第01组 beta冲刺(3/5)
    第01组 beta冲刺(2/5)
    第01组 Beta冲刺(1/5)
    latex Illegal, another ibstyle command
  • 原文地址:https://www.cnblogs.com/lxblog/p/4095260.html
Copyright © 2011-2022 走看看