软件设计

斯卡拉摇摆MVP

有没有人知道一些精心编写的示例项目,显示如何在Scala + Swing中实现MVP架构? 我在Scala + Swing中只发现了有关MVP的主题: 改进MVP在Scala中 Scala model-view-演示者,特征 另外第二个额外的问题:你觉得,将GUI窗口小部件从视图展现给演示者是不对的使用public getter: def getNextButton() ..
发布时间:2017-05-14 11:12:55 软件设计

存储库设计模式

我看到许多仓库模式实现。特别是2种类型 他们暴露了可查询的通用存储库,并期望从服务类获取数据的lamba表达式 编写方法以根据业务需求从数据库获取数据,并封装检索数据的逻辑(甚至lambda)。 哪一种是更好的方法? 解决方案 我真的很喜欢第二个。 即使我已经看到.NET世界上的顶级博客的文章,对我来说,可疑的是在一个存储库中的恶意。 原因: 存储库就像 ..
发布时间:2017-05-14 11:11:03 软件设计

命令模式似乎不必要的复杂(我不明白什么?)

我已经阅读了命令模式,我觉得我错过了一些东西。存在Command对象来抽象出Receiver对象的细节。在我看来,我们可以简单地在这里停下来,并保留对Command对象的引用,以在适当的时候执行适当的方法。 为什么Invoker需要?这个附加间接提供什么优点?我们已经把接收器的细节隐藏在命令之后,命令的动机是什么,然后被隐藏起来呢? 解决方案 嗯,如果你这样说,这看起来很复杂,但是经 ..

工厂方法模式的实际用途是什么?

我很新的设计模式。我刚刚遇到工厂设计模式。我理解它将实例化委托给子类。但是我没有得到模式的实际应用。在哪种情况下,这种模式可以用于很好的效果。我听说过模式滥用,不想沉迷于此。任何人都可以提到通常使用的真实世界的例子。 解决方案 我已经将它用于插件到应用程序...这样你可以让你的主要应用程序调用类工厂实例化您在主应用程序中开发的某些界面的特定插件。这样,您可以编写应用程序的主要部分,而无需知 ..
发布时间:2017-05-14 11:09:14 软件设计

工厂模式的优势是什么?

可能重复: 工厂方法模式的实际用途是什么? 抽象工厂模式与工厂方法之间的差异 我目前对工厂的理解是,它可以通过输入字符串创建对象,例如 Factory.create( “鼠标”); Factory.create(“hamster”); 此模式与新版本有什么优势? 解决方案 如果您想通过共享工厂“协调”创建不同对象(在您的示例中为“鼠标和仓鼠” ..
发布时间:2017-05-14 11:08:13 软件设计

在java Web应用程序中,我应该在哪里存储用户的照片?

这个问题可能是愚蠢的,但我真的不明白如何解决它: 以免在我的应用程序中有一个用户。该用户编辑他的个人资料,并需要编辑他的头像。 我应该在哪里存储头像文件? 首先我正在保存src\main\webapp\resources中的所有文件,但每次我重新部署该文件夹清空。 所以我决定放在另一个位置:c:\wwwdir\resources,但是我无法将本地资源与远程页面链接,因此我无法显示任 ..
发布时间:2017-05-14 11:08:01 软件设计

ruby如何允许一个方法和一个同名的Class?

我碰巧在Ruby中进行Singleton课程,只记得在 factory_girl 。他们处理好了,所以你可以使用长的方式 Factory.create(...)和短路 工厂(...)我想到了,很好奇,看看他们如何让课程工厂也表现像一个方法一样。 他们只是简单地使用工厂两次: def工厂(args) ... 结束 类工厂 ... end 我的问题是: R ..

“经纪定义集”设计模式 - 以另一个名字而闻名?

在我参与多年的项目中,我逐渐发展出一种被证明对我非常有用的设计模式。我有时觉得我应该得到一点福音派,但如果我尝试发现这只是我的某个旧帽子的版本,我会感到有点尴尬。我已经通过设计模式挖掘了空白,而且还没有人讨论过任何人,但我的搜索并不详尽。 核心思想是拥有管理一组定义对象的代理对象,每个定义对象构成一些复杂属性的可能值。举个例子,你可能有Car,Plane和Generator类都有Engine ..
发布时间:2017-05-14 11:05:12 软件设计

观察者模式应该包括一些无限循环检测?

快速浏览GoF和头部设计模式书籍,似乎没有提到观察者模式的无限循环检测和处理? 我认为如果是2类之间,我们可以更加小心无限循环问题,但是如果有5个类或12个类,并且观察者去多方向。在这种情况下,将不会有一个无限循环,而且这个模式可能会有一些检测? 解决方案 无限循环可以(a)观察者也可观察到,(b)他们观察到的变化可能导致自身变化,(c)观察图是循环的,(d)有一种变化可能会导致变化 ..
发布时间:2017-05-14 11:04:36 软件设计

Akka的策略模式

这是我以前的问题的延续我如何避免在Akka接收方法上的类型擦除 我有10种类型的事件从我需要处理的事件延伸。 > 我想为每个事件在单独的特征中实现业务逻辑,因为混合所有10个事件处理函数将产生几百个(如果不是数千行)的代码。 我不想为每个事件创建不同的Actor类型。例如: class Event1Actor extends Actor { def receive = ..
发布时间:2017-05-14 11:03:16 软件设计

链责任设计模式与使用简单的if-elseif-else块有什么区别?

我刚刚查找“责任链”,而且我发现了这个 基本上,有一个抽象处理程序,然后是具体的处理程序,每个处理程序都实现了父抽象处理程序的handle方法。实现是这样的,起初有一个检查,看看这个特定的处理程序是否可以处理当前的请求,如果没有,那么它会将请求传递给它的后继者。 现在,我也可以使用一个简单的if-else条件块来做同样的事情。要从上面的链接中获取第一个例子,这里是我如何更改它: ..
发布时间:2017-05-14 11:03:04 软件设计

大型嵌套式开关语句的设计模式

我搜索了一些关于重构一个大的开关语句的文章。 但是他们不要做我想做的事情问题我要去来运行是有一个巨大的切换语句,根据两个不同的值调用不同的方法,让我们说一个类型和代码。 目前,我将处理这样的情况: switch(type) { case Types.Type1: handleType1(code); break; case Types.Type2: hand ..
发布时间:2017-05-14 11:02:38 软件设计

单身样式的替代方案?

我已经是网络开发人员一段时间了,现在使用ASP.NET和C#,我想通过使用最佳做法尝试增加我的技能。 我有一个网站我想加载设置一次,只需要引用它,我需要它。所以我做了一些研究,50%的开发人员似乎都在使用单例模式来做到这一点。另外50%的开发商都是蚂蚁单身人士。他们都讨厌单身人士。他们建议依赖注入。 为什么单身人士不好?加载网站设置的最佳做法是什么?它们应该只加载一次,并在需要时引用? ..
发布时间:2017-05-14 11:01:59 软件设计

如何正确使用NHibernate ISession对象 - 会话已关闭!错误

我在NHibernate中遇到了我的会话问题。我一直在“会话关闭!”错误。有些人可以向我显示正确的模式,包括以下方法的定义和何时使用每个方法: ISession.Close ) ISession.Dispose() ISession.Disconnect() 这是我的问题。我有一个回调设置,以消除每几分钟向玩家颁发徽章的过程。但是我不断得到“会话关闭!” 这 ..
发布时间:2017-05-14 11:01:13 软件设计

什么是鬼设计模式?

有人最近问了一个关于鬼设计模式的问题 - 我以前没看过。 什么是鬼设计模式,它如何实现?我只能在网页上找到代码片段。 解决方案 我曾经听过的唯一的参考设计模式“Ghost”位于 Lazy-Loading 。 由于Lazy加载仅涉及在实际需要时加载对象,所以您可以将其视为“Ghost”。您可以看到它的大纲,但在加载之前无法真正使用它。 ..
发布时间:2017-05-14 11:00:54 软件设计

战略和飞行模式

我已经看到“策略对象经常使得优秀的flyweights”(从可重用的面向对象软件的设计模式元素),我想知道如何实现。我没有在互联网上找到任何例子。 下面的代码(C#)是否正确,遵循这个想法? 谢谢! using System; 使用System.Collections.Generic; 命名空间StrategyFlyweight { 类程序 { static v ..
发布时间:2017-05-14 11:00:18 软件设计

工人设计模式

什么是“工作者”设计模式? 解决方案 可能是因为工作线程模式,您可以在其中使用队列来计划要执行的任务被工作线程处理“离线”。 一些解决方案将使用工作线程池,而不是单线程来实现性能提升通过利用paralelisation。 ..
发布时间:2017-05-14 10:59:37 软件设计