软件设计

违反DRY原则总是坏吗?

我一直在讨论 DRY (不要重复自己)原则,也称为 DIE ( / em>),并且有投票,任何简单的代码重复总是一个邪恶。我想听听您对以下几点的意见: 不确定的未来。假设我们在两个地方有相同的代码。关键是这两个地方只有偶然的内涵。有一种可能性,因为他们的上下文和语义是不同的,它们将在将来变化。从这些地方抽象并不便宜,如果这些地方之一发生变化,展开抽象将更加昂贵。 可读性。有一个复杂的计算涉 ..
发布时间:2017-05-14 20:59:34 软件设计

在Ruby中实现的所有设计模式的备忘单?

我想知道Ruby中实现的所有设计模式是否都有欺骗性的热忱,因此您不必重新发明。 解决方案 设计模式可用于组织大量的代码。因为您不需要像#{verbose_algol_derivitive_language}中那样编写尽可能多的代码来执行ruby,所以它们的重要性不一样。 你将会看到什么使用所有时间是使用块实现的策略和构建器(构建器的一个例子是在rails视图中为form_for块,策 ..
发布时间:2017-05-14 20:58:47 软件设计

oop中的多对多关系

可以说我们有两个类,团队和 >玩家 任何给定的玩家可以在多个团队 任何团队可以拥有尽可能多的玩家, 我喜欢调用方法,如 playerX.getTeamList() / code>以获取他/她在中的所有团队的列表 teamY.getPlayerList()以获得团队中所有玩家的列表 (或有一些其他方法可以有效地实现) 我可以想到两种做法,但是他们根本不觉得好像是oo ..
发布时间:2017-05-14 20:57:43 软件设计

WCF数据合同和参考实体数据?

参考数据是什么意思? > 我们以Northwind为例。订单与数据库中的客户相关。当我实现我的订单服务时,在某些情况下,我希望引用一个“完整的”客户从一个订单和其他情况下,我只想要一个引用客户(例如一个键/值对)。 例如,如果我正在做一个GetAllOrders(),我不想要返回一个完全填写的订单,我想要返回一个轻量级版本一个订单,只有每个订单的客户的参考数据。如果我做了一个GetOr ..
发布时间:2017-05-14 20:56:21 软件设计

移动开发架构设计模式

我需要一些关于各种移动开发架构和设计模式的链接,例如,在iPhone开发中,MVC被使用,与此类似,移动应用程序开发中使用的各种其他体系结构是什么。 解决方案 命令,Flyweight,抽象工厂,责任链,适配器等。移动应用程序开发与服务器和桌面应用程序开发(如今)没有太大差异。例如,如果您查看可可基础指南第4章你会注意到,你需要的是学习这些。 ..
发布时间:2017-05-14 20:55:44 软件设计

当需要记录时,会考虑哪种设计模式?

我正在开发的应用程序需要记录操作,执行操作的用户以及对数据库的操作时间。 哪种设计模式最受欢迎/适用于日志记录? 我正在考虑需要当前用户和操作的命令模式。执行操作并写入日志。 你觉得怎么样?任何其他可以考虑的替代方案? 谢谢。 解决方案 您可以使用 AOP 应用日志记录,而不会有任何侵入行为。 AOP可能会像Proxy和Decorator Pattern的混合。 ..
发布时间:2017-05-14 20:55:18 软件设计

在matlab中使用FFT去除图像中的图案和噪声

我正在使用clown.jpg图像来消除明显的模式/噪点。 在拍摄图像之前,我做的第一步是重新调整两个幂的平方图像(即256 x 256)。在MATLAB中使用FFT和fftshift,以图像中心的强度为基础,进行快速傅立叶变换。以下图像是使用上述功能的结果。 我成功地通过在FFT图像上手动归零“星星”来消除模式/噪点,如下所示: 采取IFFT,我得到一个更好的图片质量(未显示)。 ..
发布时间:2017-05-14 20:54:45 软件设计

Scala的元组展开细微差别

我在scala中注意到了以下行为: scala> val(A,B,C)=(1,2,3) :5:error:not found:value A val(A,B,C)=(1, 2,3) ^ :5:错误:未找到:值B val(A,B,C)=(1,2,3) ^ :5:error:not found:value C val(A,B ..
发布时间:2017-05-14 20:54:05 软件设计

我们是否有效使用IoC?

因此,我的公司使用城堡温莎IoC容器,但以某种方式感觉“关闭”: 所有数据类型都以代码注册,而不是配置文件。 所有数据类型都是硬编码的,以使用一个接口实现。实际上,对于几乎所有给定的接口,只有一个实现才会有。 所有注册的数据类型都有一个默认构造函数,所以Windsor不会实例化任何对象图注册类型。 设计系统的人坚持使IoC容器使系统更好。我们有1200多个公共课程,所以它是一个大型 ..
发布时间:2017-05-14 20:52:40 软件设计

适配器模式:类适配器与对象适配器

我有几个关于适配器模式的问题。我理解,类适配器从适配器继承,而对象适配器将适配器作为对象,而不是继承。 什么时候可以使用类适配器对象适配器,反之亦然此外,使用类适配器和对象适配器的权衡取舍是什么? 解决方案 我可以看到对象适配器的一个优势,具体取决于您的编程语言:如果后者不支持多继承(例如Java),并且您想要适应几个适配器,您将无法使用对象适配器。 对象适配器的另一点是,您可 ..
发布时间:2017-05-14 20:52:03 软件设计

构建社交网络类型应用程序的模式?

我需要设计/设计/开发基于网络的社交网络类型应用程序。 基本功能: - 用户在系统 - 用户彼此同意“朋友” - 用户在系统内创建内容 - 用户指定哪些朋友可以查看/编辑他们创建的内容 这个核心功能确实已经创建了很多次吗?对于如何实现这种事情,有没有最佳实践模式? 我最感兴趣的是这个数据库的外观。 从SQL透视图(任何数据库),这样会是什么样的? ..

如何使用LinqToSQL / Entity Framework / NHibernate实现管道和过滤器模式?

由DAL Repository构建时,我偶然发现了一个名为Pipes and Filters的概念。我阅读了关于它的 here ,在这里看到这里的截屏。我仍然不知道如何实现这种模式。理论上来说,听起来都不错,但是我们如何在企业场景中真正实现? 如果您有任何资源,提示或示例,我将会感激,在上下文中提到的数据映射器/ ORM。 提前感谢! 解决方案 最终,LINQ on IEnum ..

什么,具体地,属于模型,视图和控制器?

我一直在学习模型 - 视图 - 控制器范例(“MVC”),但我很困惑,因为一些教程与其他教程相矛盾。 我目前对此过程的理解如下所示: 路由器/调度程序/前端控制器: 虽然在“MVC”名称中没有具体引用,但路由器仍然是非常重要的一部分。在这里,请求是从原始URL转换到特定的控制器。例如,路由请求www.StackUnderflow.com/question/123到应用程序的“问题 ..

对象适配器模式和类适配器模式之间的区别

如何决定何时使用对象适配器以及何时使用类适配器? 问题陈述: 创建社交网站并提供导入功能从Facebook,谷歌和orkut。我无法决定是否使用对象适配器或类适配器。 我已经看过适配器模式:类适配器与对象适配器,但无法理解差异的本质。 解决方案 主要区别: strong>使用继承,只能包装类。它不能包装一个接口,因为根据定义它必须从一些基类派生。 对象适配器使用 ..
发布时间:2017-05-14 20:49:31 软件设计

关于使用ASP.NET MVC /实体框架进行POCO验证的建议

下面是这种情况: ASP.NET MVC2 Web应用程序 实体框架4纯POCO,自定义数据上下文) 存储库模式 工作单元格 依赖注入 服务层中介控制器 - >存储库 所以基本上都是很酷的东西。 :) 基本UI操作的事件流程(“添加帖子”): 控制器在服务层调用添加(Post)方法 服务层调用添加(T) / li> 存储库调用 AddObject(T)在自定义 ..

将使用backgroundworker的方法替换为async / tpl(.NET 4.0)

我的问题很多。自从我看到NET 4.5,我印象非常深刻。不幸的是,我所有的项目都是.NET 4.0,我并没有考虑迁移。所以我想简化我的代码。 目前,我的大部分代码通常需要足够的时间冻结屏幕,我执行以下操作: BackgroundWorker bd = new BackgroundWorker(); bd.DoWork + =(a,r)=> { r.Result = Proc ..

如何设计一个通用商业实体,仍然是OO?

我正在开发一种应用于不同需求的多个客户端的打包产品(在一定程度上),因此应以足够灵活的方式构建,以便每个特定客户端可定制。我们在这里谈论的那种定制是不同的客户端可能对某些关键业务对象有不同的属性。此外,他们可能会有不同的业务逻辑与他们的额外属性绑定 作为一个非常简单的例子: 考虑“汽车“成为系统中的商业实体,因此具有4个关键属性,即VehicleNumber,YearOfManufactur ..
发布时间:2017-05-14 20:47:26 软件设计

使用域实体的一对一接口是好还是坏的做法?为什么?

我在一些DDD企业应用程序中看到的一件事就是使用与域实体相同的接口,通过一对一的属性和功能映射。实际上,域对象总是通过它的一对一接口使用,所有域实体都有一个一对一的接口。 例如: 域对象帐户: public class帐户:IAccount { public string Name {get; set;} //...s更多字段也在IAccount public d ..
发布时间:2017-05-14 20:46:16 软件设计

Hibernate中的通用DAO模式

在Hibernate工作时,我们遵循Hibernate Doc中提到的通用Hibernate DAO模式。 所以我们目前正在维护两个平行的资产 1)对于接口 2)for Implimentation 所以如果我们以这种方式工作,即使没有提出新的方法,我们需要标准的persistencence方法为这个entiry创建一个标记界面以及它的实现。 尽管这种方法似乎没有问题,它的明 ..
发布时间:2017-05-14 20:45:51 软件设计

单身亡

如何在go编程语言中实现Singleton设计模式? 解决方案 设置是否实现单例模式是一个好主意,这是一个可能的实现: package singleton type single struct { O interface {}; } var instantiated * single = nil func New()* single { 如果实例化== ..
发布时间:2017-05-14 11:59:09 软件设计