atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx
atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx
2.1. 模式就是在一种场合下对某个问题的一个解决方案。"2
3.1. 知识固化 知识沉淀 精华沉淀,最佳实践固化 文档固化3
3.2. 复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙3
3.4. 规范性 确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识3
3.6. 提高观察高度--模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来4
4. 软件设计模式起源于建筑领域,而建筑工程中设计模式的数量(253个)4
5.1. 软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式6
7.2. 软件新发展的设计模式(1995-2016年)attilax总结总和大约80个..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的更多相关文章
- Atitit paip.对象方法的实现原理与本质.txt
Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...
- 基于简单sql语句的sql解析原理及在大数据中的应用
基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...
- Atitit Atitit.软件兼容性原理----------API兼容 Qa7
Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...
- Atitit.软件兼容性原理与实践 v5 qa2.docx
Atitit.软件兼容性原理与实践 v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...
- atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect
atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect #-----原理 Hibernate 运行期获得Dialect 2010-07-28 12:59 ...
- Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别
Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别 通常来说函数调用要用到的两条基本的指令:”CALL”指令和”RET”指令.”CALL”指令将当前的指令指针(这个指 ...
- atitit.软件设计模式大的总结attialx总结
atitit.软件设计模式大的总结attialx总结 1. 设计模式的历史3 2. 设计模式的数量(253个)3 3. 设计模式的结构4 3.1. 应用场景and条件Context4 3.2. Pro ...
- atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect
atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect #-----原理 Hibernate 执行期获得Dialect 2010-07-28 12:59 ...
- Atitit 软件国际化原理与概论
Atitit 软件国际化原理与概论 语言和文化习俗因地域不同而差别很大.对某一特定的地域的 语言环境称为"locale".它不仅包括语言和货币单位,而且还包括 数字标示格式, 日期 ...
随机推荐
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- angular 源码分析 1 - angularInit()
angularjs 是个神奇的框架,由于我的好奇,想了解她的内部工作原理,只能一步一步的走进她,靠近她,和她深入的交流. angularjs 的入口是什么样子的呢?一起掀起她的盖头吧. 在这里我只讲方 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- ie6 ie7 ie8 ie9兼容问题终极解决方案
放下包袱,解决低版本兼容问题 这是一个老生常谈的问题,自然解决这个问题的方案也比较多,下面整理了一些解决方法: 1.强制使用高版本渲染模式. 强制使用Edge模式来解析网页代码 <meta ...
- 张小龙宣布微信小程序1月9日发布,并回答了大家最关心的8个问题
2016 年 12 月 28 日,张小龙在微信公开课 PRO 版的会场上,宣布了微信小程序的正式发布时间. 微信小程序将于 2017 年 1 月 9 号正式上线. 同时他解释称,小程序就像PC时代的网 ...
- 听H3絮叨:何以让天下没有难用的流程
最近朋友圈.网站新闻铺天盖地是"让天下没有难用的流程",有人就要问了,H3 BPM何德何能,为BPM站台,让天下没有难用的流程? 这是一个关于"办公室空想"的故 ...
- Unicode 和 UTF-8 有何区别?
Unicode符号范围 (一个字符两个字节) | UTF-8编码方式 (十六进制) | (二进制) —————————————————————– 这儿有四个字节从-----00 00 ...
- Android事件分发机制浅谈(一)
---恢复内容开始--- 一.是什么 我们首先要了解什么是事件分发,通俗的讲就是,当一个触摸事件发生的时候,从一个窗口到一个视图,再到一个视图,直至被消费的过程. 二.做什么 在深入学习android ...
- [计算机网络]简易http server程序
好久没输出了,知识还是要写下总结才能让思路更加清晰.最近在学习计算机网络相关的知识,来聊聊如何编写一个建议的HTTP服务器. 这个http server的实现源代码我放在了我的github上,有兴趣的 ...