Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设计模式在web开发中有多重要?_Python_Design Patterns_Oop - Fatal编程技术网

Python 设计模式在web开发中有多重要?

Python 设计模式在web开发中有多重要?,python,design-patterns,oop,Python,Design Patterns,Oop,我应该完全熟悉哪些设计模式?还有一个简单的例子,每个都可以用来做什么 我是一名web开发人员(我使用Django,熟悉逻辑分离),但我在一家桌面应用程序公司工作。他们总是谈论单身汉,我忘了……但这让我一点线索也没有 MVP或MVC 或 更多的建筑模式,但从来没有,它们是设计模式的组合。忘记Singleton。这很令人困惑,几乎没有必要 学习状态、策略和命令。它们一直在使用 状态是指任何具有依赖于对象状态的逻辑的对象。简言之,每个if语句都可以通过State更好地完成。认真地太多的if语句是一种代

我应该完全熟悉哪些设计模式?还有一个简单的例子,每个都可以用来做什么


我是一名web开发人员(我使用Django,熟悉逻辑分离),但我在一家桌面应用程序公司工作。他们总是谈论单身汉,我忘了……但这让我一点线索也没有

MVPMVC


更多的建筑模式,但从来没有,它们是设计模式的组合。

忘记Singleton。这很令人困惑,几乎没有必要

学习状态策略命令。它们一直在使用

状态是指任何具有依赖于对象状态的逻辑的对象。简言之,每个if语句都可以通过State更好地完成。认真地太多的if语句是一种代码味道,表明有状态处理到处都是

策略用于任何“插件”或“扩展”或“选项”处理


命令用于任何可扩展(和可组合)的操作集。备份,恢复。表的删除、创建、索引和填充。验证、加载、汇总、报告。任何类似命令的东西,可以以不同的方式、不同的顺序等组合在一起,可能都应该通过正式的命令设计来完成

老实说,模式很重要,但知道何时使用它们也同样重要。永远不会有固定的答案,这是你需要自己摸索出来的。人们认为它是一个绝对的,你应该一直使用或不使用它们的斗争是不正确的。设计模式是一种工具。我建议你在Amazon.com上找一本专门介绍设计模式的书,无论你用什么语言写。我知道有一个是为RubyonRails编写的,非常棒,尽管我不记得它的名字,还有一个是为Java编写的,叫做HeadFirst设计模式,还有一个是由Bob和MicahMartin编写的C#,非常棒。阅读你最熟悉的语言中的任何一种。即使您没有使用所有的模式,了解它们是如何工作的以及它们何时有用也是很好的。

MVVM是我见过的与Silverlight一起使用的较新的模式。这有点多,但似乎很有效。

知道设计模式为什么是解决给定问题的最佳策略之前,了解它们不会有多大用处。从一开始就学习设计模式可能是好的,但你已经错过了解决这个问题的所有“错误”方法,这反过来意味着你可能会错过在何时使用给定模式和何时不使用它的细微差别

唯一比那些墨守成规、不学正道的人更糟糕的是,那些学正道的人,不学正道的原因。他们不断地把它应用到那些不应该应用的东西上,因为他们只是不太清楚

因此,我的观点是,如果你是web开发新手,不要太沉迷于设计模式的炒作(尽管这是一个很好的炒作)。自己动手学习。当您达到一定的水平时,请仔细阅读设计模式,看看它们在哪里可以被应用,从而使您的代码变得更好


这就是你正确学习它们的方法。不像在走路之前被迫跑步。

对于web应用程序,至少在基本层面上理解企业应用程序架构模式中描述的模式对我来说是很有价值的。“四人帮”的模式也值得了解

但我想说的是,你根本不需要百科全书式的模式知识就可以开始。当您的想法/业务问题与代码之间开始出现摩擦时,粗略的理解将帮助您了解应该从何处着手。我有几次周末旅行,这两本书让我得以完整地阅读,但我仍然发现模式部分中的详细信息作为参考比作为背景知识更有用

仅仅阅读GoF或PoEAA的“第1部分”部分将比深入学习三到四种模式更能帮助你,因为当你遇到他们描述的问题时,你会知道该去哪里寻找。你可以在网上查询他们描述的大多数模式的细节

我在web开发中直接或间接地(通常是无意识地)使用的GoF模式包括:观察者、命令、组合、状态和策略。除了作为日志记录和服务定位器/依赖注入工具的客户端之外,我通常不使用Singleton。PoEAA模式是我经常使用的,通常是无意识使用的,或者作为我正在使用的数据访问策略或web框架的一部分使用的,它们是活动记录、应用程序控制器、数据映射器、域模型、网关、延迟加载、层超类型、页面控制器、模板视图和值对象。这并不详尽;这些只是我脑海中闪现的几个

从一个固执己见的web开发框架(如Rails、Django或Castle Monorail)开始学习,可能比抽象的学习更有用。毕竟,模式是从数千个成功的应用程序开发经验中识别和提取出来的,不是发明出来的,而是因为它们听起来很聪明而被粘在一起的

在一两个模式上获得的比肤浅的知识更好的知识很容易让人过度兴奋,然后很快看到每个问题都是“钉子”,并试图将一个不合适的模式敲入解决方案,因为你知道它是如何工作的


所以,学习模式,是的;对所有常用代码的动机有一个粗略的概述,但不要觉得你必须等到理解了其中任意的一个列表后才能编写严肃的代码。

这是一个相当大胆的说法。我看到很多