若转载教程,请注明出自SW-X框架官方文档 啊

1、简单理解

A、世界上只有两种程序员,蹩脚的和优秀的:

在蹩脚的程序员眼里,BUG需求千变万化,无迹可寻,因为他的世界里代码是混乱的,逻辑是耦合的,所以他们坚信:别逼逼,拿起需求就是干,船下海不沉就是赢。
在优秀的程序员眼里,BUG需求万变不离其宗,因为他的世界里代码都是按某种规则规律所分布编写,逻辑清晰分离,所以他们坚信:发现问题,总结问题,解决问题,船下海之后能航行多远,中途是否能快速升级船仓整体。

B、这两种程序员的工作方式也大不相同:

蹩脚的程序员还停留在刚毕业的层次,他们通常接到任务的第一时间,就是撸起袖子,一顿敲改,成功运行即为胜利,失败就回滚版本重来。
优秀的程序员则是已经学会停下思考,他们通常接到任务的第一时间,现在是回顾历史版本,展望任务的下一版本,再根据当前业务代码规划出如何低耦合的修改代码,在规划中已经可以预见这次修改是否能够成功运行,与方案的优缺点。
是否具备模式的思想能力,是衡量一个程序员是蹩脚程序员还是优秀程序员的重要标准。

2、模式是什么

有人说:“模式就是针对特定场合下特定问题的特定解决方案。”。这话过于泛泛,按照这种定义,在厕所里拉完屎要取出手纸也应该算是一种模式。所以,别听这些外行瞎咧咧。
我认为,如果要进行简单的类比,模式大致相当于物理学或化学中的实验。
模式是可复现的,无论是问题还是解决方案。想想你们曾今做过的物理实验、化学实验等等;
模式是可教学的,让人可以理解、完善并传承。想想你们曾今的物理老师、化学老师等等;
模式是可复用的,在充分考虑了它的适用范围,边界条件等影响因素后能够快速地应用到类似的场合中从而解决问题。想想你们曾今学过的公式、定理等等;
模式是可命名的,让人可以轻松的交流。想想你们曾今学过的名词、术语等等;
所以,模式是什么?答案就简单了。
模式是一种抽象,将千万个问题归纳为一个问题,将千万个解决方法归纳为一个解决方案。
模式是一种过程,经过了无数前辈发现、归纳、验证、记录。
模式是一种语言,如果你还不懂那些模式名称背后所代表的具体含义,请不要自称为设计师。
那么,什么是软件设计模式?其实就是将模式细化到软件设计领域而已。
所以设计模式,并不是编程行业独有的名词。

3、模式不是什么

模式是一个答案?错!

这就好比我把解一元二次方程的公式教给你了,但是要得到一个具体一元二次方程的解,你还是要算一下的。

模式是针对具体开发语言的?错!

模式是一种思想,并不针对具体的某一种语言,它可以适用于C、C++、C#、Java、Javascript、Python等等。

模式是只针对面向对象设计思想的?错!

模式并不只局限于面向对象设计思想,只不过,当四人帮写出那本软件设计模式代表作的时候,面向对象设计思想正大行其道,借着面向对象的名字听起来比较高端大气上档次而已。模式在面向过程设计思想、泛型设计思想、函数式编程设计思想等领域也是可以应用的。

模式必须工具或方法的支持?错!

尽管在讨论软件设计模式的时候我们见过了太多的UML图,但是那只是因为UML是描述面向对象设计思想的一种工具,而常见的软件设计模式又是针对面向对象设计思想的。

模式可以自动生成程序的架构?错!

架构是比模式更高一个层次的存在,一个架构里可以有很多种模式,但是架构的可复用性要远远低于模式的可复用性。否则搞软件的这份工作也就太简单了。

模式可以提供更高的生产率、保证系统的可扩展性?错!

这个是比程序架构更改层次的存在,这个很难,或许未来的人工智能可以,但至少现在还根本看不到希望。如果你非要讨论这个问题,来,还是让我们讨论一下解放台湾的问题吧。

模式是少数人装逼的东西?错!

模式的名称是为了方便设计师之间的交流,本质上是为了节省时间。如果你是老板的小舅子,所有和你沟通的时间都算是有效工作时间,可以给工资的话。来,我们可以从这个名词的读音和文字的笔画构成上讲起。

4、那什么是编程中的设计模式?

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。
通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。
我们使用设计模式最终的目的是实现代码的 高内聚 和 低耦合。

什么是高内聚和低耦合?

举例一个现实生活中的例子,例如一个公司,一般都是各个部门各司其职,互不干涉。
各个部门需要沟通时通过专门的负责人进行对接。
在软件里面也是一样的 一个功能模块只是关注一个功能,一个模块最好只实现一个功能。
这个是所谓的内聚,模块与模块之间、系统与系统之间的交互,是不可避免的,但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生,尽可能多的单独提供接口用于对外操作,这个就是所谓的低耦合。

设计模式的7大原则

设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)
如果不遵守原则,则等于无规矩不成方圆,乱写一通。
设计模式常用的七大原则分别是:

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒转(倒置)原则
  4. 里氏替换原则
  5. 开闭原则
  6. 迪米特法则
  7. 合成复用原则1