设计模式,六大设计原则,类的特性

总纲
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox

模版方法模式

定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

通用类图


模版方法模式确实非常简单,仅仅使用了JAVA/PHP语言的继承机制,但它是一个应用非常广泛的模式。
AbstractClass叫做抽象模版,他的方法分为两类:
1. 基本方法
基本方法也叫基本操作,是由子类实现的方法,并且在模版方法中调用
2. 模版方法
可以有一个或几个,一般是一个具体方法,也就是一个框架实现对基本方法的调度,完成固定的逻辑

案例

JAVA

//抽象模版类
public abstract class AbstractClass{//基本方法protected void doAnything();//基本方法protected void doSomething();//模版方法protected void templateMethod(){/*** 调用基本方法,完成相关的逻辑*/this.doAnything();this.doSomething();}
}
//具体模版类
public class ConcreteClass1 extends AbstractClass{//实现基本方法protected void doAnything(){...}protected void doSomething(){...}
}
public class ConcreteClass2 extends AbstractClass{//实现基本方法protected void doAnything(){...}protected void doSomething(){...}
}//场景类
public class Client{public static void main(String[] args){AbstractClass class1=new ConcreteClass1();AbstractClass class2=new ConcreteClass2();class1.templateMethod();class2.templateMethod();}
}

抽象模版中的基本方法尽量设计为protected类型,符合迪米特法则,不需要暴露的属性或方法尽量不要设置为protected类型。
实现类若非必要,尽量不要扩大父类中的访问权限

优点

封装不变部分,扩展可变部分
提取公共部分代码,便于维护
行为由父类控制,子类实现

使用场景

多个子类有公有的方法,并且逻辑基本相同时
重要、复杂的算法,可以把核心算法设计为模版方法,周边的相关细节功能则由各个子类实现
重构时,模版方法是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为

设计模式之模版方法模式相关推荐

  1. 详解设计模式:模版方法模式

    模板方法模式(Template Method Pattern)也被称为模板模式(Template Pattern),是在 GoF 23 种设计模式中定义了的行为型模式. 模板方法模式 定义一个操作中的 ...

  2. Java设计模式学习 - 模版方法模式策略模式

    个人博客项目地址 希望各位帮忙点个star,给我加个小星星✨ 设计模式-模板方法&策略模式 简单介绍 模板方法模式(Template):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. ...

  3. 设计模式-模版方法模式

    定义 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现. 模版方法使子类在不改变算法结构的情况下,重新定义算法的某些步骤 使用场景 一次性实现算法的不变部分,将可变的行为留给子类来实现 各子类 ...

  4. 设计模式之模版方法模式的钩子方法

    public abstract class SoyaMilk {//模版方法 可以做成finaL,不让子类去覆盖final void make(){select();if(customerWantCo ...

  5. 设计模式之模版方法模式demo

    public abstract class SoyaMilk {//模版方法 可以做成finaL,不让子类去覆盖final void make(){select();addCondiments();s ...

  6. 设计模式 模版方法模式 展现程序员的一天

    继续设计模式~ 模版方法模式 老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤. 简单看下定义,模版方法定义了一个算 ...

  7. 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)

    0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...

  8. 设计模式(九)模版方法模式

    相关文章 设计模式(一)设计六大原则 设计模式(二)单例模式的七种写法 设计模式(三)建造者模式 设计模式(四)简单工厂模式 设计模式(五)观察者模式 设计模式(六)代理模式 设计模式(七)装饰模式 ...

  9. Java设计模式笔记(4)模版方法模式

    模版方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤. 抽象模版的方法分为两类: 1. 基本方法也叫基本操作,是由子类实现的方 ...

  10. 模版方法模式/Template Method

    模版方法模式/Template Method 意图/适用场景: 模版方法模式其实是一种应用很广泛的模式,特别是在使用抽象类的时候. 模版方法模式中必然有一个核心的抽象类,不能是接口.声明一些抽象方法, ...

最新文章

  1. 网络工程师_想要记录下来的一些题_5
  2. 习题3-3 出租车计价 (15 分)
  3. mysql修改表中某个字段的默认值
  4. win10访问不了局域网计算机名,Win10正式版无法访问局域网电脑怎么办
  5. 使用select和insert的小细节
  6. java byte缓存_Java 之 字节缓冲流
  7. [多媒体]MKV 配音分离提取, 伴奏提取
  8. 步入2021,大热的GNN会在哪些应用领域大展拳脚呢?
  9. HALCON基础知识
  10. 隐藏在数学中的哲理,令人回味无穷
  11. Java HashSet和HashMap源码剖析
  12. 潭州教育-Python学习笔记@基本数据类型:元祖字典
  13. jsf tree组件_JSF文本组件–标签,文本字段,文本区域和密码
  14. Mongodb 学习
  15. Java入门基础第3天《使用记事本编写运行Java程序》
  16. 三角函数泰勒级数推导
  17. 2021-2027全球与中国兽医临床试验业务市场现状及未来发展趋势
  18. matlab的h桥igbt驱动级死区电路,[转载]STM32 PWM死区--- H桥驱动电路 --- 三相桥式整流电路...
  19. linux 查看硬盘序列号、设备序列号、系统安装时间
  20. Cadedce Allegro 里面怎么切线删除一条线上的某一段

热门文章

  1. Jquery获取web窗体关闭事件,排除刷新页面
  2. 新浪微博开放平台站内应用开发流程直播(四)
  3. 【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测
  4. 拓端tecdat|HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
  5. c语言在头文件后int a,C语言头文件 实现文件 工程文件组织
  6. Python parser中的nargs
  7. 【NumPy基础】100道numpy练习——进阶篇
  8. django(一)——在PyCharm下搭建开发环境
  9. html网页中获取vf数据到mysql_怎样从HTML网页中获取SQL数据库里的数据
  10. 帝豪gl车机系统降级_鲜试车丨10万元级国民轿车再升级,试驾2020款吉利帝豪GL...