软件设计

Symfony2并且是控制器中的DRY方法

我正在使用Symfony2为我公司开发一个小CMS。我真的很喜欢这个框架。我喜欢表单课,并重用它们(这些都是关于表单)。 但是(是的,有一个“但”)我觉得我是执行相同的操作,复制并粘贴到所有控制器中。我们讨厌的代码重复。随着所有业务逻辑转移到服务和表单,事件,持续行为在原则所有我的控制器都做同样的事情: 获取相应的 $ this-> get('mycompany。 动态创建表单(逻辑 ..
发布时间:2017-05-16 18:12:37 软件设计

空对象模式以避免空的检查?

最近我遇到了Null对象的设计模式,同事们说可以用这个方法去掉整个代码中遇到的空指针检查。 ,例如假设DAO类返回Customer(在名为CustomerVO的值对象)中的信息。我的主要课程是提取firstName和emailId并发送电子邮件给客户。 ... CustomerVO custVO = CustomerDAO.getCustomer(customerID); i ..
发布时间:2017-05-16 18:11:50 软件设计

单一责任和混合

鉴于 Mixins 通常在课堂中引入新的行为,这通常意味着一个类将有多个行为。 如果一个类有一个责任,这被定义为只有一个原因要更改的类。 所以,我可以从两个不同的角度看到这一点。 。混合模块也只有一个改变的原因。如果课程改变只有类才需要重新测试。如果模块更改只有模块需要重新测试。因此,SRP是完整的。 课程现在有两个变化的原因。如果班级改变,班级和班级都需要重新测试。如果模 ..
发布时间:2017-05-16 18:10:57 软件设计

仅查看属性(例如:IsSelected)和MVVM中的Model

考虑使用MVVM编写的WPF应用程序。应用程序需要显示Employees列表(FirstName,LastName,Title),您可以选择多个删除。 在这种情况下,模型将是“ Employee “,它将实现 INotifyPropertyChanged 。 该视图将是” EmployeeListView “将实现XAML来显示员工的集合。 ViewModel将是“ Employ ..
发布时间:2017-05-16 18:10:27 软件设计

域驱动设计模式 - 从域访问存储库

我一直在将域驱动的设计模式应用到我们的Web应用程序。我们遇到的一个问题是避免使用一个实体中的存储库。 例如,我们有一些实体的方法将触发一个电子邮件。因此,我们必须能够访问电子邮件模板(存储在数据库中),以及在数据库队列表中创建一个新的电子邮件记录。我们目前正在通过访问这些实例中的存储库来违反模式。 我们应该在这些实例中使用“服务”或“应用程序”层(我们有很多他们)?有没有更好的方法来 ..
发布时间:2017-05-16 18:10:14 软件设计

如何使用Ruby中的Singleton设计模式创建一个Class?

单例模式是用于将类的实例化限制为一个对象实例的设计模式。虽然我知道如何用C ++和Java编写单例模式,但我想知道有没有人知道如何在Ruby中实现它? 解决方案 p>其实上面的答案是不完全正确的。 require'singleton' class示例 包括Singleton end 您还需要包含require'singleton'陈述。 ..
发布时间:2017-05-16 18:08:49 软件设计

存储库模式是否与Asp.net提供程序模型相同?

由于Asp.net 2.0,有提供者模型。在实现细节上,提供者是派生自ProviderBase的类,它是抽象类而不是接口,但无论如何,提供者模型都在这里,因此我们可以通过编辑web.config来实现交换。例如,如果您创建一个博客应用程序,您可能有一个BlogProvider:ProviderBase,那么您可以使用BlogProvider的实现:SqlBlogProvider,OracleBlo ..
发布时间:2017-05-16 18:05:28 软件设计

需要使用Patterns(DAO x Gateway)进行一些澄清

我和我的同事今天早上进入了这个讨论,我们的意见开始有点冲突,所以我决定在这里得到一些公正的建议。 我的同事估计,DAO应该返回一个对象(填充的bean)。我认为只有一行返回一个记录集是完全正确的,但是如果你必须返回10行,并创建10个单独的对象,那就认为这是非常有用的。 另一方面,我看到DAO和网关模式之间的区别在于,网关模式将允许您将记录集返回到您的业务类,因此它将处理记录集数据并执 ..
发布时间:2017-05-16 18:04:54 软件设计

mixin被认为是设计模式吗?

混合是否被认为是设计模式?结构? 解决方案 他们是一种语言功能。 “模式”与特征不同,它解决了一系列可能以矛盾的方式影响情境的力量。通过存在或不存在的特征往往会使模式解决的力量创建。许多设计模式(Double Dispatch是一个很好的例子)来解决语言限制(在这种情况下,在单个参数中调度方法)。 ..
发布时间:2017-05-16 18:04:01 软件设计

纯制造和间接的区别

我正在尝试找到教程和很好的例子来解释这两者之间的区别,但无法找到任何信息。 纯制造和间接行为为中间对象创建和分配职责,任何人都可以解释这些设计模式之间的区别? 谢谢! 解决方案 如果要创建一个较低的组件之间的耦合。 Larman在应用UML和Patterns中建议的示例是TaxCalculatorAdapter类。为了屏蔽客户端不必知道可能的适配器的内部工作,他隐藏了间接的方法 ..
发布时间:2017-05-16 18:03:47 软件设计

打破一个大型,凝聚力的阶级

我有一个班,我觉得太久了。我真的不知道太长的意思,但它是大约2500行代码。然而,所有的方法都使用至少一个或多个变量,所以我认为它是非常有凝聚力的。我正在考虑将这个类分成几个较小的类,它们将使用三个相同的变量。这是不好的设计还是代表一种模式? class MyClass { ... MyVar1 myVar1; MyVar2 myVar2; public void D ..
发布时间:2017-05-14 22:04:53 软件设计

设计(如何)包含其他类的集合的类

如何设计涉及其他类的集合的课程? 常规示例: A 工作空间包含项目的数量。 一个项目包含大量的资源。 每个资源可能包含大量的文件。 所以这里所标识的类可以是Workspace,Project,Resource和File。 工作区将有Project.Project的列表将有资源和资源列表将有文件列表。当然,每个类都有相关的设置。 现在基本的问题是: a)谁 ..
发布时间:2017-05-14 22:04:27 软件设计

是否有很好的软件可扩展性测试模式?

我最近对识别软件可扩展性测试的模式感兴趣。由于不同软件解决方案的不同性质,似乎有像可扩展性测试软件的问题一样多的好解决方案,就像设计和实现软件一样。对我来说,这意味着我们可能会为广泛使用的这种类型的测试提供一些模式。 为了消除歧义,我会提前说我正在使用可扩展性测试的维基百科定义。 我最感兴趣的是提供特定模式名称的详细说明。 解决方案 所有的测试情景我知道使用相同的测试基础结构, ..
发布时间:2017-05-14 22:02:50 软件设计

需要创建一个“选择你自己的冒险”类型指南 - 最佳使用方法

基本上需要向用户询问一些问题,并在路上收集信息。每个问题都可能会对不同的问题产生影响。另一个例子是涡轮税的网络界面,在某些方面回答是可能会触发未来的问题。 似乎这样会在软件中是一个相当常见的问题,所以我想问我是否有任何现有的解决方案/设计模式可以帮助。种类好像是状态机,但我认为这是一个过度简化。 解决方案 查看这张图片,有助于选择正确的字体,名为所以你需要一个字体(大图像!)。 ..
发布时间:2017-05-14 22:01:27 软件设计

依赖注射容器 - 工厂模式

我一直在尝试了解依赖注入,并且一直在阅读并尝试编写一个类似于此的小型依赖注入容器: http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-container 令人困惑的一件事是: Is依赖注入容器只是一个荣耀的实现工厂模式? 如果是这样,为什么不这么说,为什么需要一个花哨的术语只能混淆事 ..

为什么我们应该使用与使用它们的类接口,而不是实现它们的接口?

我正在经历Robert C. Martin的一篇文章,他在一个地方给了一个这样的例子: 第一张图片显示,这两个包。要删除此依赖关系,将在第二个映像中添加一个新界面。 B实现接口,Y使用它。 Martin提出以下几点: 界面通常被包含在使用它们的包中,而不是在 的包中 我的问题是,为什么要这样安排界面?包装接口背后的原因是什么?根据共同关闭原则,一起变化的课程应该保持在一起。更接 ..
发布时间:2017-05-14 21:56:16 软件设计

Java EE 6 - 持久域对象模式 - 任何成功?

我有一个使用POJO的中等复杂应用程序,现在将其迁移到EJB3.1,以便可以在线部署,通过REST服务访问并从容器环境中受益(持久性是最主要的,但事务将是有用的)。 自J2EE之日起,我已经远离了Java EE,并且正在努力围绕实体bean的“丢失”。我花了一段时间才意识到EJB3.1中的实体实际上并不是古老的豆豆... :)我已经阅读了许多EJB3书籍,包括O'Reilly Enterpr ..
发布时间:2017-05-14 21:56:04 软件设计

您是否知道PAC设计模式的任何示例?

任何人都可以指向使用 Presentation-Abstraction-Control的任何网站或网络应用程序设计模式而不是MVC?桌面应用程序很容易找到(例如:GIMP),但是我正在网上寻找东西。 解决方案 更多的网站使用PAC比我想,人们意识到。例如, drupal 使用PAC模式,并且有很多网站(和很多大网站)使用drupal建立。许多人将 MVC 和 PAC 。 拉里·加菲尔德(L ..

对OO语言的反转控制是否具体?

另一种提出这个问题的方法是:根据你的反转控制是什么? 我问这个问题是因为维基百科的文章 IoC 被非OO解释劫持。来自讨论页面,来自2007年: p> 我自由地完全重写页面,因为以前的内容完全被无意义的“面向对象” p> 我没有看到Inversion of Control在OO语言之外有任何意义。已经有许多解释放弃过程语言的控制(事件编程是一个),纯功能语言不需要像反转控制一样的 ..
发布时间:2017-05-14 21:53:22 软件设计