我是一个迷茫的新手和爱好者程序员,试图掌握这方面的知识,如果我的问题有点偏离或不太合理,请原谅。
我在SO上看到很多关于使用设计模式的问题,我想知道有没有好的资源可以学习和实现设计模式?我了解一般的思路,并知道如何/何时使用其中的几种(Singletons、工厂方法),但我知道我还有很多东西需要学习。
(只是以防万一,我的首选语言是C#,但我也可以从其他语言的例子中学习)
我是一个迷茫的新手和爱好者程序员,试图掌握这方面的知识,如果我的问题有点偏离或不太合理,请原谅。
我在SO上看到很多关于使用设计模式的问题,我想知道有没有好的资源可以学习和实现设计模式?我了解一般的思路,并知道如何/何时使用其中的几种(Singletons、工厂方法),但我知道我还有很多东西需要学习。
(只是以防万一,我的首选语言是C#,但我也可以从其他语言的例子中学习)
一旦你理解了这个概念,就可以浏览Eclipse源代码或设计,有很多这些模式的真正好例子(毫不奇怪,Gamma是其中之一的设计师)。
对于经验很少的人来说,深入研究设计模式并没有太多意义。了解它们的存在是很好的,但此时你应该更加关注其他事情,而不仅仅是学习设计模式。
在问题的背景下,它们是有用的 - 作为新手开发者的概念,它们实际上并没有太多实用价值,除了知道在何时何地可以使用它们。
编辑 为了澄清 - 许多设计模式都是某些领域中发现的问题的结果。一个新的程序员几乎不可能(在我看来)知道要为一些问题集使用哪些设计模式。就像我们在计算机科学研究中获得了一些算法的基础知识一样,我们需要了解我们可以使用模式做什么以及它们的好处,但当一个人还在构建“Hello World”或发现STL时,并没有太多实际需要设计模式。模式很棒。但它们不是万能药。
(CASE(工具)也不是,UML也不是/曾经不是,SCRUM也不是,TDD也不是,STL也不是,Java也不是,XML等等。)这些都只是我们职业生涯的方面,把这些主题视为第二次来临是幼稚的。
模式是程序员用来谈论抽象设计的高级词汇。如果您正在重复使用一个抽象解决方案,通过名称引用它会很有帮助。如果您发明了一个模式,最好进行一些检查以确保它没有被命名过。如果已经被命名,则该描述可能很有用。
即使只是编写了一点代码,您也会注意到自己在编写与之前相似的内容。这就是一个模式。即使它是一个微小的模式,也值得注意。是否有更好的模式?您是否看到某些微小的模式合作解决了更大的问题?那么下次,当您想要解决更大的问题时,整个模式将作为一个单一的块出现在您的脑海中。详细的代码行变得机械化。
您越注意模式,编程就越容易,并且您将更加欣赏其他程序员制定的一些最大和最佳的模式。尝试掌握MVC模式。无论如何,各种变体都会出现在各个地方,甚至在微小的设计决策中。