大话设计模式—何为设计模式
设计模式。说起设计模式,设计模式。总是给人留下一种高屋建瓴。金碧辉煌的感觉。
甚至非常多人以在一款软件里使用了多少设计模式来衡量软件代码的质量。
所以设计模式对于我们这些软件开发者来说,实在再熟悉只是了。自从一本由四人组合写的奇书横空出世以后。设计模式在软件开发中就火了起来,非常多程序猿甚至把那本书奉为圣经。尽管我们怎么熟悉它,那我们是否真的全然理解或者掌握了它的精髓了呢?
不管学习什么知识我们首先从三问。或者五问问起(全部知识学习都逃不出这几问)。
第一问,是什么?首先我们来看看这个设计模式究竟是什么呢?设计模式,模式,首先我们顾名思义,它肯定是一种模式。所以我们在谈设计模式之前,我们先来看看什么是个模式。模式,这个概念对于我们来说也并不陌生。
在我们的生活中,也到处都是。
网上的定义:模式是指从生产经验和生活经验中经过抽象和升华提炼出来的核心知识体系。模式(Pattern)事实上就是解决某一类问题的方法论。
把解决某类问题的方法总结归纳到理论高度。那就是模式。
模式是一种指导。在一个良好的指导下,有助于你完毕任务,有助于你作出一个优良的设计方案。达到事半功倍的效果。并且会得到解决这个问题的最佳办法。
维基百科的定义:模式(英语:Pattern,源自法语:patron)。在物体或事件上,产生的一种规律变化与自我反复的样式与过程。
模式就是一种人们在解决这个问题的过程中,对同一类型反复出现的问题的各种解决之法的总结归纳,终于抽象提炼出的一种为了今后可以更高效,更好的去解决同类问题的方法理论。事实上。模式。就是一种固定的可以比較好的解决这个问题的方法理论。再简单说,模式就是一种解决这个问题的方式。风格。比方,我们生活中的常提到的商业模式。企业运营模式,还有我们常常剖析的思维模式。
说到思维模式,我们伟大的米老师的思维模式就最经典,是我们全部人都要学习的哈。我们常常画思维导图,我们画的每一张导图,事实上就是我们一种思维模式的反应。我们常常说的思维定式就是一种特殊的思维模式。
每当人们提到思维定式,总觉得思维定式不过一种思想的禁锢。
事实上不然,思维定式是一把双刃剑,对我们事实上也有非常大的优点。我们平时的生活是离不开思维定式的。
比方:1+1=2?1+1不一定等于2!
可是在我们的生活中多数情况下1+1就等于2,所以我们慢慢的就形成了1+1等于2的思维定式。而且这个思维定式帮了我们非常大的忙,它是我们做复杂计算的基础。假设我们没有这个思维定式,那我们做计算时那就费劲多了,我们还得去想1+1真的等于2?什么时候才等于2呢?这样我们就太浪费时间,浪费生命了。想的太多了。而有了思维定式,我们就行脱口而出,想都不用想。所以。思维定式并非我们想象的那么万恶。事实上它给我们带来的优点还是非常多的,尤其是在提高效率上面。关于思维定式的详细论述,请见我的博客《学习触发器谈思维定式 》。
说到模式。生活中处处都是模式。比方文章有文章的模式。
如新闻有新闻的模式,第一段总是话简述了整个新闻,诗歌总是抒情的,论文总是死板的,讲稿总是高谈的,漫画总是幽默的,…… 新闻联播的模式是:头 10分钟领导非常忙,中间 10 分钟人民非常幸福。后 10 分钟国外非常乱。中国政府官方宣传稿也模式也非常明显,各种赞美,口号。胜利。总是要坚持个什么。团结个什么,迈向个什么,某某精神,某某思想,群众情绪稳定,不明真相,等等……
这就是 Pattern。仅仅要你细心观察,你会发现这世间处处都是 Pattern。
关于模式就讲到这里,如今回到我们的设计模式。大家明确了模式,如今再来看设计模式。就非常easy明确了。设计模式,仅仅是加了2字“设计”而已。
模式,是一种固定的可以比較好的解决这个问题的方法理论。所以设计模式,自然就是软件开发中一种固定的可以比較好的解决某一类问题的设计方法。
设计模式的英文是 Design Pattern,模式是 Pattern 的汉译。所谓 Pattern 就是一种规则。或是一种模型,或是一种习惯。
孙悟空从石头缝里蹦出来。《西游记》还介绍了这个石头的来历呢。那么我们的设计模式的介绍,当然也不例外了。说完了是什么。我们再来看看为什么这个问题。为什么会有设计模式呢?设计模式是怎么产生的呢?以下我们来详细看看。
设计模式。这个概念首先是由一本奇书中产生的。然后就火起来的。这本书就叫《设计模式》,原名《Design Patterns: Elements of Reusable Object-Oriented Software》(1995年出版,出版社:AddisonWesly Longman.Inc),而写这本书的人是GoF(“四人帮”,又称Gang of Four,即Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人)。他们在这本书里第一次将设计模式提升到理论高度,并将之规范化。
该书提出了23种基本设计模式。
时至今日。在可复用面向对象软件的发展过程中,新的设计模式仍然不断出现。
所谓的设计模式。我们日常工作中经经常使用,仅仅是我们没有像GoF一样想过,把这些日经常使用到的模式总结归纳,形成结构化的理论。可见,设计模式不真正是GoF提出的概念,而是他们作为一个有心人,把人们日常工作中遇到的设计问题,全面的总结,才形成了之后的“23种设计模式”。所以设计模式这个东西,原本就存在,仅仅是我们缺少一双发现美的眼睛。
《设计模式》这本书中,GoF 这四个人总结了 23 个经典的面向对象的设计模式。某中有 5 个创建模式,7 个结构模式,11 个行为模式。非常多人都会认为这是面向对象的设计模式,非常多人也认为非面向对象不能用这些模式。
事实上不然,我认为这是一种教条主义。我们说的那23种设计模式。仅仅是GOf用面向对象实现的罢了。
就像我上面说过的那些生活中的 Pattern 一样。仅仅要你细致思考,你会发现这 23 个设计模式在我们的生活和社会中也能有他们的身影。比方:那个活字印刷。简单工厂。代理模式,追女孩的那个样例,採用了代理模式,结果为别人做了嫁衣。观察者模式,观察老板是否回来了?命令模式,考羊肉串。
设计模式,设计模式,重在设计(当然了以下说的全部的设计模式都是指我们的面向对象开发的设计模式)。设计所要解决的主要问题。是怎样高效率、高质量、低风险的应对各种各类变化。比如需求变更、软件升级等。所以设计模式的基础还是我们的面向对象。设计的方式主要是提取抽象、隔离变化。遵循一定的设计原则,这里有先人们总结出的七大原则。
1. 单一职责
2. 里氏替换
3. 迪米特法则
4. 依赖倒转
5. 接口隔离
6. 开放-封闭
7. 合成/聚合复用原则
关于这七大原则的具体解说。请关注我的兴许博客。
事实上编程是一种文化。在软件这个行业慢慢的,不断的沉淀,形成了一种特有的新生的文化,就像我们一个名族的文化,几千年积累下来的,根深蒂固的,影响更深远。设计模式,在这里事实上就是一种思想,一种哲学。
posted on 2017-07-29 13:19 cynchanpin 阅读(1003) 评论(0) 编辑 收藏 举报