模板设计模式

模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:

  • 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。
  • 模版方法:由抽象类声明并加以实现。一般来说,模版方法调用抽象方法来完成主要的逻辑功能,并且,模版方法大多会定义为final类型,指明主要的逻辑功能在子类中不能被重写。
  • 钩子方法:由抽象类声明并加以实现。但是子类可以去扩展,子类可以通过扩展钩子方法来影响模版方法的逻辑。 抽象类的任务是搭建逻辑的框架,通常由经验丰富的人员编写,因为抽象类的好坏直接决定了程序是否稳定性。 实现类用来实现细节。抽象类中的模版方法正是通过实现类扩展的方法来完成业务逻辑。只要实现类中的扩展方法通过了单元测试,在模版方法正确的前提下,整体功能一般不会出现大的错误。

架构中经常使用的一种设计模式,很好的发挥了面向抽象程序设计,实现了“高类聚,低耦合”的架构思想。所以非常值得研究,学习和实践。

开篇:跑题时间

虽然要跑题也先放上几张来源于网络的PPT正示一下主题,免得一下跑题太远收不回来。

开始正式跑题了!这篇文章不想只谈技术,一半当成总结吧。话说但凡爱装逼的老码农无不一张口设计模式、AOP、IOC(DI)等名词成天挂在口上。其实技术和工作年限没有太直接的联系,你没干上架构师的活(岗位),说的吹的再顺溜也等于是无用功。我干程序员头三年是做传统的行业管理软件“酒店管理系统”,当时是使用Delphi+Oracle做的,当年“聪明的程序员”都爱用Delphi,我一拖控件就是三年,一直都是面向过程设计,非科班出身,野生程序员,所以转了C#之后又三年才开始慢慢面向对象设计和编程,但是我始终没有面向抽象编程,也不明白为啥要使用接口、抽象类。C#用了五年的样子开始学设计模式和经常重构了以为达到了“看山还是山,看水还是水”的境界,其实差老鼻子远了。现在基本上.net用了有10年了,可惜一直没有遇上大项目,一直在小作坊,小公司里打转。曾经有一次机会,团队里来了一个架构师,但当时离开了那个团队,因为新来的总监套路太多太厉害,加上我冲撞了COO,作为非正式的部门经理被迫离职。一直没有好好的进行架构设计,直到遇到现在的系统,非常佩服系统第一代的架构师,思想非常纯正,项目里也使用了模板设计模式。现在的系统架构沿用了十几年了,一直很稳定,开放性很好,导致后续两任架构师都超越不了,后来就一直没有架构师了;现在公司的岗位目标也是工控架构师,但是看了半年的公开课,系统的学习了架构师知识体系这后,我认为架构师只能是养成的。话说最近醒悟了,不是ctrl+C,ctrl+V天天都这样猛干吧,老码农得在他的岗位上提升自己的“领导力”,努力让生态越来越好。

找不到哪里看过的那张ctrl+C,ctrl+V一把梭的图了,暂时用这个代替了。因为今天第二次看“C#/.Net架构师设计模式特训【软谋教育】”的模板设计模式的公开课,虽然公开课都是重复的反复的讲那些知识,但是每看一次总是有新的心得。最近结合几次实践,越发觉得有写文加深印象的必要,于是有了此篇随笔。我的关注点是:为什么架构师这么重视这个模式,实践意义在哪里?作为一个油腻的中年大叔看来必须有点追求了,经常性的口是心非,不按套路出牌,不按计划不走寻常路...,你以为多特别其实一直很失败。本来准备写个年终总结的,但是好久都没有立长志了,一直都没按计划来。呵呵。其实是有计划的,只是实现起来是跨年的,身上背了几十万债务...好吧还是收回来,别倒苦水了。我只是说任何时候都不能有不脚踏实地的理由,应该不浮躁,每天进步一点点吧。

主题之普通方法/虚方法/抽象方法/

这是一篇没有写完的随笔,最近工作比较忙,现在想放弃了。不写了,具体案例其实另外两篇随笔已经写了,感兴趣可以看看:

http://www.cnblogs.com/datacool/p/datacool_2017_pda.html

http://www.cnblogs.com/datacool/p/datacool_2017_gdi.html

C#模板设计模式使用和学习心得的更多相关文章

  1. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  2. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. jquery validate学习心得

    据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~ ...

  5. java模板设计模式

    1.概述 模板设计模式定义:定义一个操作中的算法骨架,将步骤延迟到子类中. 模板设计模式是一种行为设计模式,一般是准备一个抽象类,将部分逻辑以具体方法或者具体的构造函数实现,然后声明一些抽象方法,这样 ...

  6. folly学习心得(转)

    原文地址:  https://www.cnblogs.com/Leo_wl/archive/2012/06/27/2566346.html   阅读目录 学习代码库的一般步骤 folly库的学习心得 ...

  7. DOCKER学习心得

    原文:DOCKER学习心得   前言: Docker的主要学习心得来源于<docker技术入门与实战> --2019.1.1->2019.1.5 la 着重从基础部分--实例分析-- ...

  8. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  9. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. 关于微信小程序textarea层级过高问题解决

    一.前言 相信做过微信小程序开发的人应该都碰到过这个问题,因为这个需求实在太常见了 由于textarea是属于原生组件,层级最高,不管在页面中我们设置z-index值多少都会被textarea组件遮挡 ...

  2. Java中float型最大值大于long型?

    float型在内存中占用的是4个字节的空间,而long型占用的是8个字节的空间. 注:float类型的范围是:一3.403E38~3.403E38.而long类型的范围是:-2^63~2^63-1(大 ...

  3. Linux命令行对文件某(些)行的提取

    [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...

  4. 安装PackageControl

    安装PackageControl 1,到PackageControl官网,查找到相应sublime text的版本安装信息, sublime text 3: import urllib.request ...

  5. 01-css的引入方式

    [转]01-css的引入方式 引入css方式(重点掌握) 行内样式 内接样式 外接样式 3.1 链接式 3.1 导入式 css介绍 现在的互联网前端分三层: HTML:超文本标记语言.从语义的角度描述 ...

  6. Neutron server的运行原理(未完待续)

    1.Neutron server首先是一个web server, 对于http和https协议的报文进行响应. 2.Neutron server进程里面包含了一个WSGI 应用程序,以及不同模块的pl ...

  7. 记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb

    记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb 前段时间我个人Google服务器意外不能用,并且我犯了一件很低级的错误,直接在gcp讲服 ...

  8. Linux操作系统--定时任务

    最近在学习Linux操作系统.学到了关于定时任务的章节,作为一个总结写下这篇文章.在Linux中,我们可以将耗时大的任务如复制大文件,压缩.解压缩大文件等放进定时任务中(深夜执行,因为工作时间访问量大 ...

  9. java基础知识总结二

    1. synchronized和reentrantlock异同 相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同 synchronized通过java对象头锁标记和Mon ...

  10. CAP理论和Base理论

    CAP理论 Consistency(一致性), 数据一致更新,所有数据变动都是同步的 Availability(可用性), 好的响应性能 Partition tolerance(分区容错性) 可靠性, ...