软件设计

何时使用CQRS设计模式?

我的团队和我一直在讨论使用CQRS(命令查询责任分隔)设计模式,我们仍然在努力评估使用它的利弊。根据: http://martinfowler.com/bliki/CQRS.html 我们在该领域还没有看到足够的使用CQRS,但没有足够的自信 ,我们了解其利弊 那么你们怎么想,什么时候要使用CQRS? 解决方案 CQRS不是包含整个应用程序的模式。 这是一个以域驱动设计 ..
发布时间:2017-05-14 11:57:40 软件设计

策略,访问者和模板方法之间的区别是什么?

我正在上课,我们刚刚了解了这些设计模式。但是我看不出有什么区别。他们听起来就像是一样的,在抽象的上面创造了具体的课程。有人可以帮我杀死这个疑问吗?感谢(: 解决方案 访客,策略和模板模式都包含算法的应用,最大的区别是在实践中他们是如何被引用的,以及它们在实践中如何使用,虽然看起来他们有相同的用例,但是看看对象的构造是否有所区别。 当我们没有能力将函数作为第一类对象传递时,通常使用策略 ..

模型和助手中的常用方法

我有一个常见的方法存在于我的模型,因为它被我的模型调用。回想起来,我的观点也需要这种模式的方法。为了实现这一点,我有: 将模型方法移到 application_helper.rb 文件 我的模型通过在我的ActiveRecord模型顶部添加 include ApplicationHelper 来调用application_helper方法 功能明智,它的工作原理。但这是一个很好的做法 ..
发布时间:2017-05-14 11:57:15 软件设计

伟大的软件设计和实现的例子

我希望这不是重复的... 你遇到的最坚实的设计和实现的软件系统/框架/应用程序是什么? 看起来像TDD,SOLID原则,OO设计模式和类似的东西可以使用非常简单的例子轻松地在播客和博客上理论化,但很难想象开发完全符合这些标准的大型系统,没有代码爆炸。在我的公司,完整的TDD似乎几乎是我们时间限制的问题。 如果有人可以指出任何好的开源项目,我真的喜欢挖进去看看什么好的TDD / S ..
发布时间:2017-05-14 11:57:03 软件设计

数据拉与推OOP方法

当我从头开始设计系统时,我经常遇到困难,无论我的对象是否应该将信息推送到另一个对象,或者对象是否应该从其他对象拉取必要的数据对象。 在OOP设计中有什么像标准,我应该更喜欢数据拉对象,而不是数据推送到对象? 任何人都可以从长期观点,或者当OOP结构/框架/图获得更复杂? 解决方案 根据请不要问,推更好 - 或更多OO。你不想查询对象的数据,所以你可以做一些事情,你想要对象来做, ..
发布时间:2017-05-14 11:56:24 软件设计

Scala中的访客模式

在Scala中是否有使用访问者模式的用例? 我应该每次在Scala中使用模式匹配我会在Java中使用访问者模式? 解决方案 是的,您应该可以从模式匹配开始,而不是访问者模式。请参阅采访Martin Odersky (我的重点): 所以这个工作的正确工具真的取决于你 想要扩展的方向。如果要使用新数据扩展,可以使用虚拟方法选择 经典面向对象的方法。如果你想要 来保持数据的固定 ..
发布时间:2017-05-14 11:49:56 软件设计

Facade和Gateway设计模式有什么区别?

或Facade == Gateway? 解决方案 在GoF书中查看门面以及Martin Fowler网关的另一个答案中的链接 Facade为(一个或多个)外部客户端提供了复杂内部组件的简单统一视图; 网关提供了一个外部资源到应用程序内部的简单统一视图。 这个区别让我们专注于哪一个更重要在设计中: 使用Facade,外部系统是我们的客户;如果外部接口更简单,最好增加面 ..
发布时间:2017-05-14 11:48:21 软件设计

在哪里可以学习先进的Haskell?

在对我的答案之一,SO用户sdcwc基本上指出以下代码: comb 0 = [[]] comb n = let rest = comb(n-1) 在map('0':) rest + +地图('1':)休息 可以替换为: comb n = replicateM n“01” 这让我非常震惊。 现在我正在寻找教授这些高级概念的教 ..
发布时间:2017-05-14 11:47:49 软件设计

策略模式V / S装饰模式

我正在学习一些设计模式。 我刚刚遇到两种模式。 策略模式 装饰模式 根据实施,我发现他们都有些混乱。 我的理解是: - 策略模式: - 策略模式提供了可用于执行 特定操作或任务的几种算法。 装饰模式: - 装饰模式向组件添加了一些功能。 事实上,我发现策略模式和装饰器模式也可以互换使用。 这里是链接: 何时和如何策略模式可以应用 ..
发布时间:2017-05-14 11:47:18 软件设计

有没有人在野外遇到过Monad Transformer?

在我的金融机构业务 - 后台IT领域,一个软件组件围绕着全局配置,记录进度,进行某种错误处理/计算短路是很常见的。哈斯克尔的Reader-,Writer-或Maybe-monads等都可以很好地建模,并与Monad变压器组合在一起。但是似乎有一些缺点:monad变压器背后的概念相当棘手难懂,monad变压器会导致非常复杂的类型签名,并且会导致一些性能损失 所以我想知道:在处理上述常见任务时, ..
发布时间:2017-05-14 11:47:06 软件设计

演示者,演示模型,ViewModel和控制器之间有什么区别?

我有一个很好的想法,每个这些模式如何工作,并了解他们之间的一些细微的差异,但是他们真的有所不同吗? 在我看来,Presenter,Presentation Model,ViewModel和Controller本质上是一样的概念。 为什么我无法将所有这些概念分类为控制器?我觉得这可能会简化整个想法很多。 任何人都可以清楚地描述他们的差异? 我想澄清一点,我明白了这种模式是如何 ..

最好的网站设计模式?

我真的很喜欢 http://ajaxpatterns.org 是否有其他网站的一般编程模式以相同的方式组织? 解决方案 我经常使用的一个网站是 101设计模式 但是,如果你以某种方式改变你的想法,找一本书... 我推荐你首先:设计模式 它为每个设计提供了非常好的描述和实际的代码示例模式。 在本书中讨论的模式经常用于实践中 例如,我读取装饰器,不同的工厂模式,MV ..
发布时间:2017-05-14 11:46:10 软件设计

依赖性反转原则(SOLID)与封装(OOP的支柱)

我最近在讨论有关依赖性反转原则,反向控制和依赖注入。关于这个话题,我们辩论这些原则是否违反了OOP的支柱之一,即封装。 我对这些事情的理解是: 依赖性反转原则意味着对象应该取决于抽象,而不是结构 - 这是基本原则 控制反转是依赖性反转原则的模式实现,其中抽象依赖关系取代具体的依赖关系允许在对象之外指定依赖关系的结构。 依赖注入是一种实现Inversion of Control并提供 ..

如何避免贫穷的域名模式和保持分离的关注?

似乎决定让你的对象完全认识到他们在系统中的角色,并且仍然避免在数据库和服务层的领域模型中有太多依赖关系。 例如:假设我有一个具有修订历史的实体,以及数据引用的几个“查找表”,您的实体对象应该有方法从某些查找表获取详细信息,无论是通过提供对查找表行的访问,或者通过将方法委托给它们,但是为了做到这一点,它取决于数据库层来读取这些行的数据。此外,当实体被保存时,它不仅需要知道如何保存自身,还需要将 ..
发布时间:2017-05-14 11:44:35 软件设计

在R中实现标准软件设计模式(关注MVC)

目前,我正在阅读很多有关软件工程,软件设计,设计模式等的内容。从完全不同的背景来看,这对我来说都是新的迷人的东西,所以请忍受我,以防我不使用正确的技术术语来描述某些方面; - ) 我最终使用参考类(ROP中的一种OOP方式)大部分时间是因为对象方向似乎是很多的正确选择我正在做的事情 现在,我想知道有没有人对实现 MVC (Model View Controller;也称为 MVP :在 ..
发布时间:2017-05-14 11:44:04 软件设计

DCI - 数据,上下文和交互 - MVC的后继者?

数据,上下文和互动(DCI)将它推荐给组织? 它由 Trygve Reenskaug , MVC模式的创建者。 它真的是MVC的继承者还是其他模式?它的利弊是什么? 解决方案 我得到的印象是,这不是一个继承人到MVC,如补充,例如图5中的 artima文章在DCI 上都有。我认为这应该有助于使模型和控制器之间的区别更加理智,或者可能在控制器的不同部分或模型的不同部分之间。 ..
发布时间:2017-05-14 11:43:19 软件设计

替代访客模式?

我正在寻找访问者模式的替代方案。让我专注于模式的几个相关方面,同时忽略不重要的细节。我将使用Shape示例(对不起!): 您有一个实现IShape界面的对象层次结构 您将在层次结构中的所有对象上执行多个全局操作,例如Draw,WriteToXml等... 直接跳入并将Draw()和WriteToXml()方法添加到IShape界面是很诱人的。这不一定是一件好事 - 每当您希望添加要在所有 ..
发布时间:2017-05-14 11:42:35 软件设计

在使用ORM解决方案的ASP.NET MVC中工作时,是否需要使用Repository模式?

对于使用实体框架或NHibernate在ASP.NET MVC中编程时,其他开发人员应用Repository模式的经验,我有点好奇。在我看来,这种模式已经在ORM中实现了。实体框架中的 DbContext 和 DbSet 以及NHibernate中的 ISession 。 Repository 模式中提到的大部分问题,如 POEE 和 DDD - 由这些ORM充分实施。就是这些担心是, ..
发布时间:2017-05-14 11:42:04 软件设计