C#模板设计模式使用和学习心得

模板设计模式

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

  • 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。
  • 模版方法:由抽象类声明并加以实现。一般来说,模版方法调用抽象方法来完成主要的逻辑功能,并且,模版方法大多会定义为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

原文地址:https://www.cnblogs.com/datacool/p/8216832.html

时间: 2024-10-28 21:03:43

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

STM32学习心得——MDK开发模板的创建

其实这一篇应该是学习心得的第一篇文章,但是由于种种原因,这篇文章到现在才放出来 STM32F407ZGTx Template 源码下载地址:https://github.com/stark-zhang/STM_Template 该源码上传时,删除了体积较大的lib文件和Keil MDK的配置文件,今天,就分享一下如何用这份源代码创建一个MDK工程 首先下载解压该模板,模板内一共有六个文件夹和一些说明文件 1. Lib_Create 生成STM官方标准库lib文件的工程文件夹 2. Lib_Mat

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

原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,

C++用法的学习心得

c++这门课,在我刚进入大学的就已经开始接触了.因为自己的专业就是计算机科学,因此c++嘛,对于我来说还是比较重要的.不同于其他专业,一开始我接触就是c++了,跳过了c语言一类的课.就我自己认为,c++这课学起来还是很有难度的.大一上课的时候,老师就说过这课在生活中的应用很广泛.处于初学者的我,开始给我的感觉就是很是乏味枯燥,提不起兴趣.不过仔细想想自己的专业就是和它有关,就算将来自己不从事这个行业,还是很有学习它的必要.因为多一门技术总归是不会吃亏的. 作为男生嘛,自己没有少玩游戏.很多人玩游

jquery validate学习心得

据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~). 最近刚刚接触到了一个简答易用的表单验证插件jquery validation,下面来分享下这几天收集到的一些资料与学习心得. 一个优秀的表单验证插件:      作为受众多web开发者追捧的validation,它理应拥有如下各种优点: 1.内置验证规则:拥有必填,url,数字,email等1

实际开发中的模板设计模式

最近的项目中,在使用spring+springJBDC 开发时,从一开始的一脸懵逼到越来越顺手,着一切,都归功于一大堆的封装方法.在这里,记录两个非常有用方法以便查阅学习 一. 组合查询的基础类(BaseCondition) 该类中,抽取了常用的组合查询的公共属性和方法,例如:分页查询中使用的 pagaSize// 页大小.pageNumber// 当前页码.rowCount;// 记录总数 rowCount;// 记录总数 拼接sql语句使用的多个重载add()方法,更据不同数据类型重载; 最

运维管理平台实现与学习心得

经过一段时间的学习,写了一个简单的运维管理平台小项目,先看看啥样吧! 下面说明下具体实现: 软件架构:HTML+CSS+Jquery+Bootstrap+Ajax+Python2.7+Django1.9+SaltStack+MySQL 功能描述: 数据可视化:采用百度开源的ECharts绘图,通过Python脚本每分钟统计Nginx日志分析PV/UV量写到数据库. 资产管理:采用SaltStack Restful API二次封装调用收集主机配置信息入库,并提供增删改查. 主机批量管理:也是调用S

悟透JavaScript——学习心得

编程世界的两个基本元素:数据和代码. 数据天生文静,欲在保持:代码天生活泼,欲在改变. 面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者. JavaScript中简单数据只有undefined.null.boolean.number和string五种,复杂数据只有object一种.代码只体现为function一种形式. 解析简单数据: undefined代表了一切未知的事物,啥也没有,无法想象,代码也就更无法处理了.注:typeof(undefined)返回值也是u

3-0SBO学习心得(格式化搜索和存储过程的综合应用)

功能: (1)采购订单中每行的物料税后折后价格均不能高于为供应商预设的价格,否则报错. 实现:存储过程 (2)例外情况,如货源紧张可能出现超价格采购,此种情况可通过审批来跳过(1)的控制.(让存储过程失效) 实现:加入一个自定义字段(1:送审:-1不送审).存储过程发现此字段取值为1表明为例外采购,即将送领导审批:取值为-1则表示不是例外采购,控制启动. (3)判断自定义字段的值,如果1就触发领导审批,-1不触发领导审批. 实现:格式化搜索可以抓到此字段的值,然后在查询向导中写逻辑.如果1返回t

c++面向对象程序设计学习心得

首先介绍几个写类间关系和设计模式的技术博文 http://www.360doc.com/content/14/0613/21/18117192_386381321.shtml http://blog.csdn.net/wuzhekai1985/article/details/6675799 http://www.cppblog.com/ming81/archive/2010/11/23/134404.html 状态模式:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.它有