Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Language agnostic 你使用设计模式吗?_Language Agnostic_Design Patterns - Fatal编程技术网

Language agnostic 你使用设计模式吗?

Language agnostic 你使用设计模式吗?,language-agnostic,design-patterns,Language Agnostic,Design Patterns,设计模式在现实世界中的渗透是什么?你是否在日常工作中使用它们——与同事讨论如何以及在何处使用它们——或者它们更像是一个学术概念 他们真的为你的工作提供了实际价值吗?或者只是人们谈论一些听起来很聪明的事情 注意:出于这个问题的目的,请忽略像Singleton这样的“简单”设计模式。我说的是设计您的代码,以便您可以利用模型视图控制器等。我尝试,是的。它们确实有助于代码的可维护性和可读性。然而,也有人滥用它们,通常(从我所看到的)是通过强迫系统进入一个不存在的模式。除了在“现实世界”中使用的简单模式之

设计模式在现实世界中的渗透是什么?你是否在日常工作中使用它们——与同事讨论如何以及在何处使用它们——或者它们更像是一个学术概念

他们真的为你的工作提供了实际价值吗?或者只是人们谈论一些听起来很聪明的事情


注意:出于这个问题的目的,请忽略像Singleton这样的“简单”设计模式。我说的是设计您的代码,以便您可以利用模型视图控制器等。

我尝试,是的。它们确实有助于代码的可维护性和可读性。然而,也有人滥用它们,通常(从我所看到的)是通过强迫系统进入一个不存在的模式。

除了在“现实世界”中使用的简单模式之外,还有许多设计模式。Stackoverflow使用模型-视图-控制器模式就是一个很好的例子。我已经在我的雇主的项目中多次使用类工厂,我也看到许多已经编写的项目使用它们


我并不是说每一种设计模式都在使用,但很多都在使用。

是的,当我们开始设计某个东西时,通常会有人注意到它与现有模式相似。然后我们看看它,看看它将如何帮助我们实现我们的目标

我们还使用了没有文档记录但在大量设计中产生的模式


请注意,我们不经常使用它们。

是的,工厂、责任链、命令、代理、访问者和观察者等都在我每天使用的代码库中使用。就MVC而言,这个网站似乎使用得很好,开发人员在这个网站上说的好东西还不够。

如果模式适用,我会尝试使用它们。我认为,看到开发人员仅仅为了实现设计模式而在代码中实现设计模式是一种悲哀。但是,对于正确的任务,设计模式可能非常有用和强大。

是的,我使用了许多著名的设计模式,但我最终也构建了一些软件,我后来发现这些软件使用了“命名”设计模式。最优雅、可重复使用的设计可以称为“模式”。这很像舞蹈动作。我们都知道华尔兹和两步舞,但并不是每个人都知道“蹦蹦跳跳”的名字,尽管我们大多数人都这么做。

MVC非常有名,所以我们经常使用设计模式。现在,如果您询问“四人帮”模式,我会使用几种模式,因为其他维护人员会知道设计以及我们在代码中的目标。尽管有几个对于我们所做的事情仍然相当模糊,所以如果我使用一个模式,我就不能得到使用模式的全部好处

它们重要吗?是的,因为它提供了一种快速、高效和普遍接受的方式来讨论软件设计的方法。你能提供更好的定制解决方案吗?是的(排序)


原始的GoF模式是从生产代码中提取出来的,因此它们对已经在野外使用的模式进行了编目。它们并不是纯粹的,甚至大部分都不是学术性的东西。

我发现MVC模式对于隔离模型逻辑非常有用,它可以被重用或处理,而不会有太多麻烦。它还有助于解耦类,并使单元测试更容易。我写过(是的,无耻插在这里…)

另外,我最近使用了基类中的工厂模式来生成并返回我需要的适当的DataContext类,使用

当尝试将两种不同的技术粘合在一起时(例如在Mac上),会使用桥接器

然而,我发现,每当我实现一个模式时,都是因为我事先就知道它。我发现我必须稍微修改原始模式,以适应我的需要,所以通常会对此进行一些额外的思考


你只需要小心,不要成为和

任何编写良好的大型程序都将使用设计模式,即使它们没有被命名或识别为设计模式。这就是设计模式,重复自然发生的设计。如果您使用的是一个丑陋的API,您可能会发现自己实现了一个
Facade
来清理它。如果组件之间有需要解耦的消息传递,您可能会发现自己正在使用
Observer
。如果你有几种可互换的算法,你可能最终会使用
策略

了解设计模式是值得的,因为您更有可能识别它们,然后更快地收敛到一个干净的解决方案。然而,即使你根本不了解它们,你最终也会创建它们(如果你是一个优秀的程序员)


当然,如果你使用的是现代语言,你可能会被迫在某些事情上使用它们,因为它们被放入标准库中。

在我看来,“你使用设计模式吗?”,这一问题本身就有点缺陷,因为答案普遍是肯定的

让我解释一下,我们,程序员和设计师,都使用设计模式。。。我们只是不总是意识到这一点。我知道这听起来很陈词滥调,但你不会去模式,模式会来找你。你设计的东西,它可能看起来像一个现有的模式,你这样命名,让每个人都明白你在说什么,你的设计决策背后的理由更有力,因为你知道它以前已经被讨论过了

我个人使用模式作为沟通工具。就这样。它们不是设计解决方案,也不是最佳实践,也不是工具箱中的工具

不要误解我的意思,如果你是一个初学者,关于模式的书籍将向你展示如何“使用”他们的模式而不是另一个有缺陷的设计来最好地解决一个解决方案。你可能会从练习中学习。然而,你必须意识到,这并不意味着每种情况都需要相应的模式来解决。每种情况都有一个怪癖,需要你去思考