问题标签 [grasp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
137 浏览

grasp - 掌握模拟工具

我想做一些抓取运动规划实验,但我编译GraspIt 失败了!在 Win7 上使用 VS2010。有没有像GraspIt这样的抓握模拟工具!可以在Win7和VS2010环境下使用吗?谢谢!

0 投票
4 回答
1822 浏览

java - MVC模式,没有数据库,对象存储在哪里?

我正在做一个学校项目,或者任务是设计一个项目管理工具。我们可以使用任何设计模式,只要我们能够根据 GRASP 原则解释它的优点。

我将给出项目工具的概要:

  • 项目的 CRUD 功能
  • 任务的 CRUD 功能(项目有任务)
  • 用户的 CRUD 功能(将用户分配给任务)
  • 一个简单的图形用户界面

我们决定采用 MVC 模式,并且不允许使用数据库。我的问题是:我应该在哪里存储对象?

我应该在控制器中执行此操作吗?目前我们这样做:

我感觉将对象保留在控制器中有些问题,但我无法解释原因。任何人都可以根据 GRASP 原则解释最佳实践是什么?

编辑: 谢谢,从大家那里学到了一些东西,但只能选择一个答案。

0 投票
1 回答
144 浏览

java - 具有 ResourceTypes 的资源的 Java 设计

我正在开发一个任务管理应用程序,它使用 ResourceManager 来管理不同资源的所有预留,每个资源都有它们的 ResourceType。目前,有 5 种 ResourceType,它们不会定期更改,但可能会发生。

我的问题是,就 OO 设计、GRASP 原则和代码的整体可维护性而言,实现此设计的最佳方法是什么:

  • 选项 A:单独的类 Resource 和 ResourceType + ResourceManager 类将为每种资源类型保留资源的多映射

  • 选项 B:单独的类 Resource + ResourceType 类将包含其对应资源的列表。

在我看来,对于选项 B,关于资源及其类型的凝聚力会更高,但我正在寻找某些(重构)场景,其中一个选项会比另一个更好?

0 投票
1 回答
49 浏览

c# - wpf replace dictionary with events

I have a WPF application with two viewmodels(AViewModel,BViewModel). I think that main problem is that Singleton.Instance.Handle.Add("...",(m)=>{...}); cannot be removed from Model because it have High Coupling. And every time when i want to update collection i need to past Singleton.Instance.Handle.Add("...",(m)=>{...}); How to update collection without pasting every time Singleton.Instance.Handle.Add("...",(m)=>{...});

and BViewModel:

AModel:

BModel:

Both models contain ObservableList, which updates with data from web.

0 投票
1 回答
58 浏览

architecture - 使用 GRASP 控制器时如何处理用户输入?

在此处输入图像描述

假设用户想要将客户添加到系统中。他用客户信息填写表格,然后按下按钮。点击事件由 UI 层中的表单对象捕获。谁负责使用用户提供的信息、表单本身或业务层中的控制器创建新的客户对象?

在“应用 UML 和模式”一书中,到目前为止我所看到的示例中,用户输入以表单或参数的形式传递给控制器​​,然后控制器创建适当的对象。我的怀疑是因为有人告诉我最好使用对象而不是一堆参数在层之间传递数据。

0 投票
2 回答
119 浏览

architecture - 谁应该负责调用方法?

如果我有复杂的任务要解决,我有时会遇到一种情况,即我有一种方法可以控制执行。由于 null 检查、if 语句、调用类型之间映射的方法等等,这个方法可能会变得非常长,我很难让它变得更简单。

示例 1

我可以链接方法调用,这使得第一种方法更简单。但这使得 fooMethod 依赖于 _barService,barMethod 依赖于 _someService 等等。

示例 2(与上面相同,但使用链式方法调用)

我应该如何构建我的代码?当涉及到哪个方法负责调用另一个方法时,我应该怎么想?

换句话说,我应该这样做:

或者像这样:

0 投票
1 回答
237 浏览

design-patterns - 掌握间接与中介者模式

GRASP 间接模式和中介者模式有什么区别?我试过谷歌搜索,但没有找到信息。

0 投票
1 回答
82 浏览

java - 如果有的话,用松耦合或高耦合改进我的代码?

我想通过创建与我的代码的更低耦合来使用 GRASP 改进我的代码。在我的示例中,我不确定我是否在进行低耦合,以及我是否在进行松耦合而不是高耦合?

我正在使用 Spring Boot 制作我的项目。在我的管理控制器中,我正在处理两个类:RestaurantcardServiceContentsectionService(来自我的服务层)。这两个类都实现了称为I_RestaurantcardService和的接口I_ContentsectionService

代码如下所示:

现在我的问题是:

如果我为属性实现接口RestaurantCardServiceContentsectionService作为属性的数据类型而不是类本身,耦合不会下降,因为我们可以在另一个变体中实现接口RestaurantCardServiceContentsectionService

然后它看起来像这样:

0 投票
0 回答
13 浏览

c++ - 当来自 UI 的事件委托给 GRAPS 控制器时,哪个类应该更新 UI?

我正在开发一个 C++ GUI 应用程序。我知道 GRASP 控制器应该将 UI 和系统事件委托给内部应用程序,并在需要时进行一些同步。但我对这种模式有一些疑问。

  1. UI 是否应该通过接口访问控制器?我看到在 PHP 中他们不这样做,但它可能会给我一些好处,或者它只是代码的无意义的复杂化?编程社区的习惯如何?

  2. 控制器应该如何命名?在我的 GUI 中,我有一个可以执行许多不同操作的表单:加载文件、连接到服务器、更改设置。那么,如何更好地命名该控制器?将它MainFormController命名为包含 UI 元素的名称(在本例中为MainForm)?或命名它ApplicationController?因为它可能有很多不同的事件,无法更具体地命名。

  3. 哪个类应该更新 UI?控制器应该这样做吗?在这种情况下,控制器将处理来自 UI 的事件并同步或异步更新 UI。这是好习惯吗?

  4. 应该更新 UI 的类是否应该通过接口访问 UI?或者它可以直接访问 UI 元素(在我的情况下是MainForm)?(can表示根据模式是否正确)。

我真的很想分析一个在代码中具有精心设计的 UI 的项目。如果你知道那个,我将不胜感激。

希望得到您的帮助!

PS:我知道这个问题可能是基于意见的,但我想知道专业程序员对此有何看法。或者也许有这个问题的 StackExchange 论坛?

0 投票
1 回答
23 浏览

design-patterns - 信息专家模式是否与服务层模式相矛盾?

在阅读有关 GRASP 模式的信息时,我停在 Information Expert,它指出类状态上的行为应该在同一个类中。但这与我多年来使用的服务层模式完全相反。服务具有域对象状态的行为。这让我感到困惑

我将不胜感激周到的回答。