zoukankan      html  css  js  c++  java
  • 我也设计模式——24.Template Method

    模板方法很简单,只要有抽象类的地方,都可以看到这个模式:就是在父类中的非抽象方法中调用抽象方法。


    基于委托的模板方法:从而具体实现方法可以不依赖于抽象类,达到解耦的目的

    几点注意:
        1.delegate声明在模板类中
        2.在类DoCompA和DoCompB中定义与委托相同的方法
        3.在Main()中组装委托链,调用tm.DoComp()意味着这是一个模板方法(非抽象中方法调用抽象方法)
        public class TemplateMethod
        
    {
            
    public delegate void Do();

            
    public Do myDo;

            
    public void DoComp()
            
    {
                myDo();
            }

        }


        
    public class DoCompA
        
    {
            
    public void c1()
            
    {
                
    //Do something 
            }


            
    public void c2()
            
    {
                
    //Do something 
            }

        }


        
    public static class DoCompB
        
    {
            
    public static void c3()
            
    {
                
    //Do something 
            }

        }


        
    public class MainClass
        
    {
            
    static void Main()
            
    {
                DoCompA a 
    = new DoCompA();

                TemplateMethod tm 
    = new TemplateMethod();

                tm.myDo 
    += new TemplateMethod.Do(a.c1);
                tm.myDo 
    += new TemplateMethod.Do(a.c2);
                tm.myDo 
    += new TemplateMethod.Do(DoCompB.c3);

                tm.DoComp();
            }

        }


  • 相关阅读:
    服务器上往Mongo导入json文件里的数据
    在Flask蓝图中使用动态URL前缀
    python 的 optparser库
    lowB 三人组
    Linux基础介绍
    html的q标签、blockquote标签
    单冒号伪元素和双冒号伪元素
    CSS中的伪元素选择器
    CSS中的选择器
    CSS中的关系选择器
  • 原文地址:https://www.cnblogs.com/Jax/p/913954.html
Copyright © 2011-2022 走看看