设计模式前奏之什么是设计模式?

来源:互联网 发布:云南风暴网络 编辑:程序博客网 时间:2024/05/16 02:06

设计模式一词来源于建筑行业,简单说就是解决建筑行业不同问题的一些模板。按照这些模板设计的建筑更有规划,更受到人们的喜爱。

由"F4"(Gang of four,GoF)引申到软件行业,归纳总结了23种使用频率大,或者最利于软件工程师解决编程过程中经常遇到的那些难题的编程模式就是软件设计中的设计模式了。

狭义设计模式共23种(这23种最常用,最通用),以这23种模式或者说解决方案解决我们编程中经常遇到的问题会使开发过程变得容易,且开发的项目易扩展,优点多多。

大学时上过设计模式课程,他是一门“错误的时间上的正确的课程”,设计模式十分有用,但又不好理解,因为理解设计模式,最好要有编程经验,全靠大学时的那些理论理解设计模式,当时是听的云山雾罩,所以现在回过头来,重轧一遍。

这23种模式好多十分常用,如单例模式、适配器模式、代理模式等,几乎在面向对象语言中经常见到,读java各种源代码、各种开源框架源代码也会经常看到。当遇见大牛使用这些设计模式的时候,我们不得不提出几个问题,这是什么设计模式?为什么这样用?为了解决什么问题?

设计模式按照目的分为:创建型、结构型、行为型。见名知义,创建型主要负责创建对象、结构型负责类或对象之间组合、行为型描述类或对象如何交互协同工作。

创建型(5个):抽象工厂模式、建造者模式、工厂方法模式、原型模式、单例模式。

结构型模式(7个):适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。

行为型模式(11个):职责连模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。

当然还有其他分类方法,比如根据处理范围分为类模式和对象模式。

在这里再列一下面向对象的设计原则,也就是面向对象编程按照什么原则设计的程序属于“好程序”。

1.单一职责原则

就是一个对象或类只包含一个职责,就干一个活,因为如果一个对象负责的任务多了必然会乱起来,复杂起来,给程序的扩展修改带来难度。

2.开闭原则

对扩展开放,对修改关闭

拿java举例,项目写完了,编译成了class文件,现在想添个功能,我重新修改源代码,再重新编译,这就不符合这个原则。好的程序应该是我添加功能,但我不修改源代码,我添加一个类,这属于扩展功能,原来代码完全不用改,把新添加的功能类编译一下和原来代码放在一起,修改一些配置,好了,添加功能成功,程序正常运行。

3.里氏代换原则

4.依赖倒转原则

3和4一起解释就是面向对象也是设计模式中最长唠叨的一句话:“面向接口编程”。

5.接口隔离原则

就是将接口细分,不要是他的不是他的都给某个倒霉接口。每个接口负责自己的工作。

6.合成复用原则

简言就是如果在一个对象里使用另一个对象的功能或属性,多用组合、聚合关系,少用继承关系。因为使用继承关系造成的类于类,对象与对象之间的耦合关系要强于聚合组合这些关系的,不利于解耦。所以这个原则一个目的,类与类之间,对象与对象之间解耦。

7.迪米特法则

迪米特法则的目的也是解耦,少于其他类发生关系,只与必要的类或对象发生关系。

为了便于记忆,总结七字:单开一里结合地。差不多就是给某个穷苦农民单分一里好地的意思吧。敲打

23种设计模式和7种面向对象设计原则有一个目的,都是为了写出“好”程序,所以他们产生了交汇点,也就是好的设计模式必然要尽量多的符合7种设计原则。

面向接口编程堪称学习设计模式的六字真言,接下来在复习23种设计模式的日子里我会经常挂在嘴边,嗡嘛呢叭咪吽!敲打


如有错误,欢迎指正

end