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://www.cnblogs.com/attilax/

--Atiend

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

atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx的更多相关文章

  1. Atitit paip.对象方法的实现原理与本质.txt

    Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...

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

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

  3. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  4. Atitit.软件兼容性原理与实践 v5 qa2.docx

    Atitit.软件兼容性原理与实践   v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...

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

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

  6. Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别

    Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别 通常来说函数调用要用到的两条基本的指令:”CALL”指令和”RET”指令.”CALL”指令将当前的指令指针(这个指 ...

  7. atitit.软件设计模式大的总结attialx总结

    atitit.软件设计模式大的总结attialx总结 1. 设计模式的历史3 2. 设计模式的数量(253个)3 3. 设计模式的结构4 3.1. 应用场景and条件Context4 3.2. Pro ...

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

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

  9. Atitit 软件国际化原理与概论

    Atitit 软件国际化原理与概论 语言和文化习俗因地域不同而差别很大.对某一特定的地域的 语言环境称为"locale".它不仅包括语言和货币单位,而且还包括 数字标示格式, 日期 ...

随机推荐

  1. 前端框架 EasyUI (0) 重新温习(序言)

    几年前,参与过一个项目.那算是一个小型的信息管理系统,BS 结构的,前端用的是基于 jQuery 的 EasyUI 框架. 我进 Team 的时候,项目已经进入开发阶段半个多月了.听说整个项目的框架是 ...

  2. TechEmpower 13轮测试中的ASP.NET Core性能测试

    应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚.在选择框架时, ...

  3. InnoDB关键特性学习笔记

    插入缓存 Insert Buffer Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能.不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分.其实不然,Inn ...

  4. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  5. iOS有关横向TableView的东西

    之前看到Apple store里面有横向的tableview,当然也有可能是collectionview啦. 尤其是项目中只有一条那么需要横向滑动的东西,就没有必要使用庞大的collectionvie ...

  6. Java compiler level does not match解决方法

    从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource Path Location Type Java compiler level d ...

  7. Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web服务器

    最近在Ubuntu上搭建了Asp.Net的Web服务器,其中遇到很多问题,整理一下思路,以备后用. 搭建环境以及配套软件 Ubuntu: 11.10 Mono:3.0.6 下载地址(http://do ...

  8. mono for android学习过程系列教程(3)

    服务 接着上一讲的内容,咱们继续来唠叨概念性的东西.服务,内容提供器,广播接收器等理论知识. 首先是服务,它不是一个可视化的组件或者视图.他是由我们开发人员来定义,可以一直一直运行 的工作单元.跟活动 ...

  9. Fedora 22中的用户和用户组管理

    The control of users and groups is a core element of Fedora system administration. This chapter expl ...

  10. your password has expired.to log in you must change it

    今天应用挂了,log提示密码过期.客户端连接不上. 打开mysql,执行sql语句提示密码过期 执行set password=new password('123456'); 提示成功,但客户端仍然连接 ...