0.前言
许多前辈程序员经过长期实践,总结出了一系列的解决方案。这些解决方案可以提高代码的可读性,增加代码的可重用性,保证代码的可扩展性。
这一系列解决方案,被人们称为设计模式,它是面向对象编程当中的各种经典套路。
设计模式是一种抽象的编程思想,并不局限于某一特定的编程语言,而是在许多语言之间相通的。比如在Java、C#、C++语言当中,都可以使用到设计模式。
但设计模式也有它的边界,它的适用范围是面向对象的编程语言。对于面向过程语言、函数式编程语言,谈论设计模式是没有意义的。
1.设计模式的分类
那么,程序员前辈们一共总结出了多少种设计模式呢?
这24种设计模式,又可以根据设计的目的,分为大大类型:
第一类:创建型模式
这一类设计模式的目的是用于创建对象。比如大家常用的工厂模式、单例模式,就属于创建型模式。
第二类:结构型模式
这一类设计模式的目的是优化不同类、对象、接口之间的结构关系。比较常用的代理模式、装饰者模式,就属于结构型模式。
第三类:行为型模式
这一类设计模式的目的是更好地实现类与类之间的交互以及算法的执行。比如策略模式、观察者模式,就属于行为型模式。
可以用下面图概况:
此外,随着编程领域的不断发展,有很多新的设计模式不断被人提出来,目前人们所用到的设计模式其实远远不止24种。
比如生产者消费者模式,发布订阅模式等等,他们都不在24种设计模式当中,但仍然非常常用。
注意一点,我们平常所说的MVC模式更多侧重于架构方面,提供的是一揽子解决方案,而不能单纯的说是一种设计模式。