如何学习devise模式?

我已经阅读了大约4-5本关于devise模式的书籍,但是我还是觉得在devise模式上我已经接近中间水平了。

我应该如何去研究devise模式?

有什么好的devise模式书吗?

我知道这只会有经验,但必须有一些方法来掌握这些?

最好的方法是开始与他们编码。 devise模式是一个很好的概念,只是阅读它们很难应用。 采取一些你在网上find的样本实现,并围绕它们build立起来。

数据和对象工厂页面是一个很好的资源。 他们会重新审视这些模式,并为您提供概念和现实世界的例子。 他们的参考资料也很棒。

我读了三本书,直到读完OReilly的“ 头一个devise模式”之后 ,仍然没有很好地理解模式。 这本书打开了我的眼睛,很好地解释。

替代文字

我这两个美分的老问题

有人已经提到,实践和重构。 我相信学习模式的正确顺序是这样的:

  1. 了解TDD
  2. 学习重构
  3. 学习模式

大多数人不理会1,很多人认为他们可以做2,几乎每个人都直接3。

对我来说,提高我的软件技能的关键是学习TDD。 这可能是一段很长时间的痛苦和缓慢的编码,但是首先编写testing肯定​​会让你对代码有很多的了解。 如果一个class级需要太多的样板或容易中断,你就会开始注意到不好的气味

TDD的主要优点在于,您不用担心重构代码,而是迫使您编写高度独立和紧密结合的类。 如果没有一套好的testing,触摸那些没有被破坏的东西太痛苦了。 有了安全网,你将真正冒险对你的代码进行巨大的改变。 那是你真正开始从实践中学习的时刻。

现在,你必须阅读有关模式的书籍,而且对我来说,这太浪费时间了。 在注意到我做了类似的事情之后,我才真正理解了模式,或者我可以将它应用于现有的代码。 没有安全testing或重构的习惯,我会等到一个新的项目。 在新项目中使用模式的问题是,你不知道它们是如何影响或改变工作代码的。 我只是在将代码重构为其中的一个之后才了解软件模式,而不是在我的代码中引入一个新代码时。

德里克·巴纳斯(Derek Banas)为我devise了许多令人喜欢的图案教程,

http://www.youtube.com/playlist?list=PLF206E906175C7E07

他们可能会有一点点时间,但他的时间和performance,使他们非常愉快的学习。

练习,练习,练习。

你可以阅读关于演奏大提琴多年,仍然不能屈从于乐器,做任何听起来像音乐的东西。

devise模式被认为是一个高层次的问题; 如果你有必要的经验来认识它们是有用的,那么这一点才是相关的。 你认识到自己很有用是件好事,但除非你已经看到他们会申请或申请的情况,否则几乎不可能理解他们的真正价值。

当他们认识到其他代码中的devise模式,或者在devise阶段认识到符合模式的问题时, 然后检查forms模式,检查问题,确定它们之间的差异,以及模式和问题的含义。

这和编码是一样的。 K&R可能是C的“圣经”,但是阅读它覆盖几遍就没有一个实际的经验; 没有替代经验。

练习练习练习。 我认为4到5本书甚至是一个没有太多练习的过度的阅读练习。 我相信最好的方法就是开始使用模式重构当前的项目 。 或者如果你没有任何你正在积极研究的项目,那么就自己动手,然后尝试重构模式

如果你没有受到他们解决的问题的困扰,你无法完全欣赏他们。 请记住,他们不是银弹 – 你不需要记住他们,并推动它很难申请。 我的两分钱

问自己这些问题:

他们在做什么?

他们分离/结合了什么?

你什么时候使用它们?

你什么时候不使用它们?

什么缺less的语言function会让他们离开?

你用什么技术债务?

有一个更简单的方法来完成工作吗?

我发现,要理解或理解某些模式的好处是有点困难的,除非理解他们解决的问题和解决问题的其他(更糟糕的)方法。

除了GOF和POSA书籍,我还没有真正阅读过,所以我不能给你其他的build议。 真的,你只需要了解问题的领域,我认为很多经验不足的开发者可能无法欣赏模式的好处。 这对他们来说并不轻微。 当一个人不得不首先与劣质的替代品作斗争时,拥抱,理解和欣赏好的解决scheme要容易得多。

祝你好运

很多很好的例子已经给出。 我想添加一个:

误用他们。 您不需要有意识地这样做,当您尝试将它们应用于最初的devise模式适配时,就会发生这种情况。 在那段时间里,你看到的每一个问题似乎都完全符合一种devise模式。 通常这些问题似乎都出于某种原因适合相同的devise模式(Singelton是这方面的主要人选)。

你会应用这种模式,这将是很好的。 几个月后,你将需要改变代码中的某些东西,并看到使用特定模式并不是那么聪明,因为你将自己编码到了一个angular落,并且需要重新进行重构。

当然,这并不是一个真正的21天的答案,但根据我的经验,这是最有可能给你一个很好的洞察力。

你有没有试过四人帮?

devise模式:可重用的面向对象软件的元素

对于书籍,我会推荐devise模式解释 ,并头首先devise模式 。 要真正学习这些模式,你应该看看你现有的代码。 寻找你已经使用的模式。 看看代码的气味和什么样的模式可以解决它们。

最新的一个来自nettuts 。

这对初学者来说是一个很好的资源。

我带领了一些devise模式讨论组( 我们的网站 ),并阅读了5或6个模式的书籍。 我build议从Head First Design Patterns书开始,参加或开始一个讨论组。 Head First书最初可能看起来有点像Hasboro,但大多数人在阅读了一两章后都喜欢它。

使用杰出的资源 – 乔舒亚Kereivisky的学习指导devise模式的模式sorting,并帮助您的讨论组。 出于经验,我build议给订单的一个变化是首先把策略。 今天的大多数开发人员都经历过工厂的一些好的或坏的化身,所以从Factory开始可能会导致关于模式的大量的对话和混乱。这往往关注如何学习和学习模式,这是非常重要的第一次会议。

你读过Allan Shalloway的“Design Patterns Explained”了吗?

这本书与其他devise模式书有很大的不同,因为它不是一个模式目录,而是主要提出了一个分解问题空间的方法,这个空间可以很容易地映射到模式。

问题可以分解为两部分:共同的事物和不同的事物。 一旦完成,我们将常见的东西映射到一个接口,以及不同的实现。 实质上,许多模式都属于这种“模式”。

例如,在战略模式中,常见的东西表示为战略的上下文,而variables部分则expression为具体的策略。

我发现这本书高度思考与其他模式的书相比,对我来说,阅读电话簿有同样的兴奋程度。

我推荐HeadFirst DesignPattern。 阅读这本书是不够的,在同化你需要的概念后,你会发现许多问题的答案在你的脑海中出现,并试图find在这些模式可以使用的现实生活中的应用。 我也是这样做的,开始提问,即使这些问题看起来很愚蠢。

我的build议是将其中一些实现组合起来,并分析它们的一些实现。 例如,在.Net中,如果您查看数据适配器,则可以使用适配器模式,如果稍微深入了解框架,也可以使用其他适配器模式。

我不知道最好的书,但纯粹主义者可能会说devise模式:可重用的面向对象软件的元素

就我个人最喜欢的,我喜欢O'Reilly出版的Head First Design Patterns 。 这是写在一个会话的声音,吸引我。 当我阅读它时,我同时检查了我的源代码,看它是否适用于我正在阅读的内容。 如果是这样,我重构。 这就是我学习责任链的方式。

实践 – 实践 – 实践。

devise模式只是工具 – 就像库函数一样。 如果你知道他们在那里,他们的近似function,你可以在需要的时候从书中挖出来。

devise模式没有任何魔力,任何优秀的程序员在任何书籍出来之前都会把他们中的90%拿出来。 在大多数情况下,我认为这些书在为各种模式定义名称时最为有用,所以我们可以更轻松地讨论它们。

我学习devise模式的方式是写很多非常可怕的软件。 当我12岁时,我不知道什么是好或坏。 我只是写了一堆意大利面代码。 在接下来的十年左右,我从错误中学到了东西。 我发现什么工作,什么没有。 我独立发明了大多数常见的devise模式,所以当我第一次听到devise模式时,我非常兴奋地了解它们,然后非常失望的是,它只是我已经直觉地认识的一些事物的名称集合。 (这个在10年内自学C ++的笑话其实并不是一个笑话)

故事的道德:写很多代码。 正如别人所说,练习,练习,练习。 我认为,直到你明白为什么你现在的devise不好,并寻找更好的方法,你将不会有一个好主意在哪里应用各种devise模式。 devise模式书应该为您提供精致的解决scheme和通用术语,与其他开发人员进行讨论,而不是针对您不了解的问题的粘贴解决scheme。

阅读devise模式,实践编码这一概念并不能帮助IMO。 当你阅读这些书籍时1.寻找特定devise模式解决的基本问题,从创作模式开始是你最好的select。 2.我确信你已经编写了过去的代码,分析你是否面临同样的问题,devise模式旨在提供一个解决scheme。 3.尝试重新devise/重新编码,或者也许从头开始。

关于资源你可以检查这些

  1. http://www.dofactory.com
  2. devise模式:Erich Gamma,Richard Helm,Ralph Johnson和John M. Vlissides的可重用面向对象软件(Addison-Wesley Professional Computing Series)的元素
  3. 企业应用程序架构模式Martin Fowler

1快速入门,2将深入学习..3将解释或应该让你觉得你在2学到了什么适合企业软件。

我的2分钱…

我认为研究devise模式也很困难。 您必须了解更多关于面向对象的知识和一些大中型应用程序开发的经验。 对于我来说,我是作为一群开发者进行研究来进行讨论的。 我们按照学习指南devise模式 ,他们已经完成了模式研究。 有C#和JavaScript开发人员联合在一起。 对我来说,奇特的是JavaScript中的C#开发人员编写代码,而JavaScript开发人员也为C#代码做了同样的事情。 在我离开会议之后,我还在家里研究和阅读了几本书来审查。 在我看来,更好地理解和记住更好的方法是在http://tech.wowkhmer.com/category/Design-Patterns.aspx中使用C#和JavaScript中的示例进行博客写作; 。

我会build议先到各个devise模式之前,先了解一下模式的名称。 另外,如果有人知道这个概念,请仅仅解释一个例子,不仅仅是编程,而是在阅读的世界里。

例如:

工厂方法:

阅读世界:我只是给钱5美元,10美元或20美元,它会生产比萨,而不知道它是如何产生的,我只是根据钱的投入得到一个小,中,大披萨,以便我可以吃或做任何事情。

编程:客户端只需将参数值$ 5,$ 10或$ 20传递给工厂方法,它就会返回Pizza对象。 所以客户可以使用这个对象而不知道它是如何处理的。

我不确定这可以帮助你。 这取决于人们参加会议的知识水平。

我认为你需要检查一下你作为一个开发者所遇到的一些问题,在你第十次修改你的代码之后,由于又一次devise变更,你把头发拉出来。 你可能有一个项目列表,你觉得有很多返工和痛苦。

从这个列表中可以得出devise模式打算解决的情况。 是否有一段时间您需要对不同的数据集执行相同的一系列操作? 你需要能够将来的应用程序的能力,但要避免重写所有的现有类的逻辑? 从这些场景开始,回到模式的目录以及它们应该解决的问题。 您可能会看到GoF和您的项目库之间的一些匹配。

对于初学者来说,一旦我们熟悉了所有的模式,首先devise模式就可以做到,然后尝试将实时对象可视化为这些模式。

本书将帮助你理解基本概念,除非你已经在现实世界中实现了你才能成为devise模式的主人