浅谈设计模式。 设计模式,重构方法,还有所谓的编程思想其实我都有一定的怀疑。 就设计模式而言,模式象征着某种定式方法,这种方法在工程中经过多次试验检验出具有更好的可扩展性,健壮性等。 换言,设计模式是一种经验。向某状态输入a得到b 输入c得到d就能根据a和b构建运算吗? 我想,这有失严谨。 我想,我们早就有更好的指导思想与方法,而不是去刻意的通过几个固定的模式来束缚我们的思想。 设想,给定我们一个状态,我们自己用编程语言去实现,这个状态可能是一个动物类,里面有鸡鸭鱼。 也可能是一个偏微分方程计算器。 我们需要做的是什么?是构建语义和状态之间的关联,通过方法去抽象。 这方法恐怕最直接的便是算法与数据结构,以及语言本身赋予我们的朴素的语法,如继承,模板等。 我们维护的语法理论上简单的,广义的,可以想象成状态机。如何证明自己的算法是最优的,这恐怕需要一点时间复杂度,以及信息论角度的证明。 但如何证明自己的代码是优秀的,我想,这和我们用代码搭建的抽象的运作模式和它自身的形态与状态本身的运作模式和physical的形态的对应度是高度相关的。 这是我认为最需要去契合的,用数理逻辑的思想去约束我们的programming的行为,而不是一些经验化的模式。当然,它们也不是一文不值,它们可以指导我们的编程状态的构建,是一些经验,可以参考。但我想,这种参考在工作之后做更好,而且如果你的编程思想足够丰富,算法与数据结构功底足够扎实,那么不看也罢。