zoukankan      html  css  js  c++  java
  • 设计模式-模板方法

    前面学习过了策略模式,策略模式是对一类的算法进行封装,利用组合,算法之间可以互相替换,但是这个是针对算法过程不是一样的算法。但是如果一系列的算法的步骤都是一样的,且算法的很多过程都是一样的处理,那么,用策略模式的话,会导致算法的重用不高,我们采用模板方法来实现:

    模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
    public abstract class CAL{
        public final void algorithm()
        {
            A1();
            A2();
            if (Judge())
                A3();
            A4();
        }
        public void A1(){
            //实现
            .....
        }
        public  void A2(){
            //实现
            .....
        }
        public abstract void A3(){}
        public abstract void A4(){}
        public boolean Judge(){
            return true;
        }
    }

    其中模板类是一个抽象类,其中算法是确定了的,A1,A2是公共的方法,所有的子类都是一样的,A3,A4是子类自己实现的不一样的函数,定义为抽象方法,子类实现,而Judge方法被成为钩子,默认返回true,而子类可以重写这个方法,这样就能让子类拥有自己的方法。但是这个也反应了模板方法的一个缺点,就是与策略模式相比,弹性不足。

    设计模式-好莱坞模式

    好莱坞模式:别调用我们,我们会调用你。

    允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件。

  • 相关阅读:
    flash编程实例源代码下载
    js4:with,for in语句,windows,location对象的使用
    js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算
    挺喜欢这个网站的
    C#Url传递中文参数时解决方法
    .NET设计模式系列文章《转》
    maven surefire plugin介绍
    spring-boot-maven-plugin 插件的作用
    github提交表情包
    接口管理工具
  • 原文地址:https://www.cnblogs.com/xtestw/p/3957720.html
Copyright © 2011-2022 走看看