atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx

1.1. 版本历史2

2. 设计模式是什么2

2.1. 模式就是在一种场合下对某个问题的一个解决方案。"2

2.2. 模式只是行话、规则、编程技巧、数据结构……"2

3. 设计模式的优点3

3.1. 知识固化 知识沉淀 精华沉淀,最佳实践固化 文档固化3

3.2. 复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙3

3.3. 大部分情况下可以提升可读性3

3.4. 规范性 确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识3

3.5. 大多数设计模式还能使软件更容易修改和维护。3

3.6. 提高观察高度--模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来4

3.7. 提升某个方面的比如扩展性,兼容性4

3.8. 综合起来提升开发效率4

3.9. 防止发生 编码与文档不同步4

4. 软件设计模式起源于建筑领域,而建筑工程中设计模式的数量(253个)4

5. 设计模式的结构5

5.1. 软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式6

6. 设计模式与框架的区别 比框架更抽象7

7. 具体的设计模式(大概100个)7

7.1. Gof 23个经典设计模式(截止1994年)7

7.2. 软件新发展的设计模式(1995-2016年)attilax总结总和大约80个..7

8. 反模式7

8.1. Reset web7

9. 参考资料7

软件的发展日新月异。。设计模式也是一直在发展。Gof 23个经典设计模式发表与1994年,也只记录了最常用的设计模式23个,但是,这个最常用的标准数量与内容因人而异和具体项目而不同,在当时1994年,设计模式的数量加上不常用的,按照20 80法则,应该总数也在100个左右。。

那么1995年以后,当然一直也有新的设计模式出现,只是没有经典书籍来总结了

软件新发展的设计模式(1995-2016年)attilax大概统计了下自身用到的设计模式大约80个

具体80个新总结的设计模式如下表所示。。

Mvc是不是设计模式,当然是设计模式来。。Struts,jsf,h5这类才是框架,才是实现mvc模式的代码实现。。..

1.1. 版本历史

Frm atitit.软件设计模式大总结attialx总结v3 pa5

V5 完善了设计模式的原理 分离原理与具体的设计模式列表。。

2. 设计模式是什么

软件模式是在软件开发中某些可重现问题的一些有效解决方法

有若干通用性的solu

2.1. 模式就是在一种场合下对某个问题的一个解决方案。"

这是Christopher Alexander的定义

2.2. 模式只是行话、规则、编程技巧、数据结构……"

Design Pattern(设计模式)的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了Design Pattern(设计模式)。这一点和Framework(框架)有些象。

#---如何抽取问题中的不变部分

下面举个排序的例子,说明如何抽取问题中的不变部分。

再次,按照field3的大小从小到大进行升序排序。

...

这种要求太多了,我们写了太多的重复代码。我们可以看到,问题的变化部分,只有判断条件部分(黑体的if条件判断语句)。

我们可以引入一个Comparator接口,把这个变化的部分抽取出来。

3. 设计模式的优点

3.1. 知识固化 知识沉淀 精华沉淀,最佳实践固化 文档固化

设计模式把最佳实践固化,防止各种乱七八糟的千疮百孔的不良实践

3.2. 复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙

3.3. 大部分情况下可以提升可读性

如果不用设计模式,一万个人可能一万个方法,设计模式熟悉起来,就那么有限的几个模式,容易看懂,提升可读性。

3.4. 规范性 确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识

3.5. 大多数设计模式还能使软件更容易修改和维护。

其原因在于,它们都是久经考验的解决方案。所以,它们的结构都是经过长期发展形成的,比新构思的解决方案更善于应对变化。而且,这些模式所用代码往往更易于理解——从而使代码更易维护。

3.6. 提高观察高度--模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来

3.7. 提升某个方面的比如扩展性,兼容性

设计模式已经预留了合适的接口模式等,未了进来的扩展性兼容性做了准备。。

3.8. 综合起来提升开发效率

以前要实现摸个东西,要自己实现,现在如果涉及模式,就会以文档,类库的模式固化

可以实现效率提升。。

3.9. 防止发生 编码与文档不同步

4. 软件设计模式起源于建筑领域,而建筑工程中设计模式的数量(253个)

与很多软件工程技术一样,模式起源于建筑领域,毕竟与只有几十年历史的软件工程相比,已经拥有几千年沉淀的建筑工程有太多值得学习和借鉴的地方。

那么模式是如何诞生的?让我们先来认识一个人——Christopher Alexander(克里斯托弗.亚历山大),哈佛大学建筑学博士、美国加州大学伯克利分校建筑学教授、加州大学伯克利分校环境结构研究所所长、美国艺术和科学院院士……头衔真多,,不过他还有一个“昵称”——模式之父(The father of patterns)。Christopher Alexander博士及其研究团队用了约20年的时间,对住宅和周边环境进行了大量的调查研究和资料收集工作,发现人们对舒适住宅和城市环境存在一些共同的认同规律,Christopher Alexander在著作A Pattern Language: Towns, Buildings, Construction中把这些认同规律归纳为253个模式,对每一个模式(Pattern)都从Context(前提条件)、Theme或Problem(目标问题)、 Solution(解决方案)三个方面进行了描述,并给出了从用户需求分析到建筑环境结构设计直至经典实例的过程模型。

1990年,软件工程界开始关注ChristopherAlexander等在这一住宅、公共建筑与城市规划领域的重大突破。最早将模式的思想引入软件工程方法学的是1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自称的四位著名软件工程学者,他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟

5. 设计模式的结构

应用场景and条件Context

Problem

解决

不适合领域

优缺点

软件模式是在软件开发中某些可重现问题的一些有效解决方法,软件模式的基础结构主要由四部分构成,包括问题描述【待解决的问题是什么】、前提条件【在何种环境或约束条件下使用】、解法【如何解决】和效果【有哪些优缺点】,如图1-1所示:

图1-1 软件模式基本结构

软件模式与具体的应用领域无关,也就是说无论你从事的是移动应用

5.1. 软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式

GoF将模式的概念引入软件工程领域,这标志着软件模式的诞生。软件模式(Software Patterns)是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式

6. 设计模式与框架的区别 比框架更抽象

设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象

7. 具体的设计模式(大概100个)

7.1. Gof 23个经典设计模式(截止1994年)

Gof只总结了最常用的23个经典模式。当然还有很多次常用的设计模式没有总结进去,还有数据库与sql方面的设计模式也是么有考虑的,他们貌似只考虑了编程语言中的通用性的设计模式

7.2. 软件新发展的设计模式(1995-2016年)attilax总结总和大约80个..

控件的onchange事件不能生效..

8. 反模式

8.1. Reset web

9. 参考资料

Atitit. 设计模式的总结Oa7.doc

atitit.软件设计模式大总结attialx总结v3 pa5.doc

atitit.设计模式的理解.txt

atitit.设计模式总结o5o

Atitit 设计模式的本质思考】

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

,Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

奶牛科技cto ,uke 首席cto  技术总监 研发总监 研发主管 部门总监

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人。

uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,

uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

Uke软件标准化协会理事长理事长 uke终身教育学校副校长

Uke 数据库与存储标准化协会副会长 uke出版社编辑总编

Uke医院 与医学院方面的创始人

转载请注明来源:attilax的专栏  ?http://blog.csdn.net/attilax

--Atiend

设计模式的好处_井底蛙_新浪博客.html

atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx相关推荐

  1. 基于简单sql语句的sql解析原理及在大数据中的应用

    基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...

  2. atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect

    atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect #-----原理 Hibernate 执行期获得Dialect 2010-07-28 12:59:58| ...

  3. Atitit.软件兼容性原理与实践 v3 q326.docx

    Atitit.软件兼容性原理与实践 v3 q326.docx 1. 架构兼容性1 2. Api兼容性1 2.1. 新api  vs  修改旧的api1 3. Web方面的兼容性(js,html)1 3 ...

  4. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...

  5. SQL注入原理-POST注入

    小伙伴们大家好!本期为大家带来的是SQL注入原理之POST注入. 目录 GET传参与POST传参 什么是POST注入? 实战演示 一.判断是否存在注入点 二.万能密码 三.判断查询字段个数 四.找出可 ...

  6. 知识工程.Vs.软件构架,框架,设计模式.

    软件工程-原文链接:http://tech.it168.com/a2009/0902/672/000000672853.shtml 此文章详细给出了软件设计的基本概念和用途,文章链接:http://w ...

  7. SQL游标原理和使用方法(转)

    SQL游标原理和使用方法 在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句.但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记 ...

  8. Atitit.木马病毒websql的原理跟个设计

    Atitit.木马病毒websql的原理跟个设计 1. Keyword Wsql { var sql="select "+p.txt+" as t,"+p.v+ ...

  9. 软件系统设计步骤与原理

    软件系统设计步骤与原理 在系统分析阶段,我们已经搞清楚了系统做什么的问题,其中最主要的是需求分析(确定用户需求.功能需求.系统性能.系统安全等方面的需求).数据流图(可以确定数据需求与转换过程):那么 ...

  10. SQL查询优化原理与向量化执行引擎

    文章目录 1.SQL查询优化的目的 2.SQL 查询优化的基本原理之研究如何通过关系代数优化执行方案 3.总结使用关系代数进行查询优化的要点 4.SQL 查询优化的基础算法 5.Volcano Opt ...

最新文章

  1. 算法 求和为n的连续正整数序列 C
  2. 轻量级数据库中间件利器Sharding-JDBC深度解析(有彩蛋)
  3. Andriod广播注册接收过程简析
  4. 原生JavaScript事件详解
  5. 终于,J 神还是加入了 Google!
  6. 利用OpenSSL创建自签名的SSL证书备忘
  7. svn钩子自动化同步代码提交任务
  8. 【图像重建】基于matlab主成分分析图像压缩重建【含Matlab源码 1173期】
  9. leetcode 336. Palindrome Pairs
  10. 中英文字体对照表-参考
  11. Java学习笔记(一):Java基础
  12. 最全企业级数仓建设迭代版
  13. 机器人的弊议论文_关于练字的作文800字高中(写字机器人的利弊议论文)
  14. SAS数据导入input要点
  15. Arch-008ArchLinux安装steam
  16. win7 下面串口驱动装好串口工具却找不到端口解决的方法
  17. 运营版uniapp多商户商城小程序+H5+APP+商家入驻短视频社区种草直播阶梯拼团
  18. 小小爬虫成长记第一天
  19. Android应用启动之从Launcher拉起APP(三)
  20. 【BP数据预测】布谷鸟算法优化BP神经网络数据预测【含Matlab源码 1121期】

热门文章

  1. golang key map 所有_Golang语言小技巧(踩坑)
  2. 数据上传需要什么硬件_搭建云服务器需要什么硬件配置
  3. selenium phantomjs
  4. 3-unit2 高级网络配置
  5. B/S VS C/S
  6. iptables 学习笔记 一 要领入门
  7. Visual Studio 2008 Designer.cs不能更新/自动添加控件声明的解决办法
  8. 新起点、新目标--获得MVP后的感悟
  9. 正则表达式 学习笔记2.2
  10. linux安装jdk(二)