在工作中,大家可能常常会发现,很多人将 Java 设计模式、大学里学的高等数学和编译原理等,视为脱离实际工作的知识。
但不管是面试还是实际工作中,是不是经常听到大牛前辈们给“洗脑”,说设计模式很重要?为此可能还专门买书或参加培训学习过,可往往都因为应用效果不佳,从开始的很重视,到后来慢慢地习惯性忽略,最后在你心中它的重要程度可能还远不如明天要交差的需求。
工作多年后,回过头再来看,其实,当时这些困惑的关键并不在于设计模式过于抽象或应用有难度,而在于可能从一开始就没有搞清楚设计模式的应用范围和背景:设计模式到底解决什么问题?为什么要抽象这样的场景?又是如何解决这些问题的?
一、对设计模式的常见误解
正因为没有搞清楚这些应用范围和背景,才导致大多数时候我们总是在“生搬硬套”设计模式,以为在应用设计模式,却不知道还没入门就一直在误解设计模式,并无法控制地胡乱使用,最后反而引入了很多不必要的麻烦。
因此,要想学好设计模式,就得摘去这些误解。
1、误解一:经典模式太抽象,很难学下去
说到设计模式,大家的第一反应是不是会想起“四人帮”GoF 的那本“经典”著作《设计模式:可复用面向对象软件的基础》?或者想起那 23 个“经典”的模式?
的确,设计模式太过于经典了,但是经典也会带来一个问题:过于抽象,难以快速理解。而对于业余时间本就不多的程序员来说,读抽象的经典更是一件难上加难的事。
比如说,下面是《设计模式》一书中关于访问者模式使用场景的描述:
一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。Visitor 使得你可以将相关的操作集中起来定义在一个类中。 当该对象结构被很多应用共享时,用 Visitor 模式让每个应用仅包含需要用到的操作。 定义