有没有一种模式,你有一个类,它的工作是实例化另一个类的常见实现

本文关键字:工作 实例化 实现 常见 另一个 有一个 一种 模式 有没有 | 更新日期: 2023-09-27 18:22:14

我想称它为"Helper",但这似乎太笼统了。

假设我有一个名为WidgetCrankerWidgetCranker的类,可以设置为生成SquareKeyholeGearShape类型的小部件。我还可以指定我希望我的小部件是哪个Color,以及我希望在它们上标记哪个Label

现在,设置WidgetCranker的每个单独实例都相当复杂,构造函数只给你一个空的WidgetCranker,你必须手动设置你想要启动的小部件的类型和颜色。

WidgetCranker keyholeWidget = new WidgetCranker();
keyholeWidget.Type = WidgetTypes.Keyhole;
keyholeWidget.Color = WidgetColors.Red;
keyholeWidget.Label = "ACME Industries Prototype 1";

但我有一个类需要很多WidgetCranker,除了标签之外,它们看起来几乎都一样。我想让我的代码更可读,维护起来也不那么费力,所以我创建了一个助手类来为我做所有的提升

WidgetCranker keyholeWidget = WidgetCrankerHelper.RedKeyhole("ACME Industries Prototype 1");

我的问题有两个:

  1. 这是一个实际的设计模式吗?如果是,我们该怎么称呼它?我想称之为工厂,但它绝对不是工厂模式。我们在每种情况下都创建完全相同类型的对象,只是以不同的方式实例化它们。我知道这是一种"帮助者",但如果可以的话,我想更具体一些。它是一个帮助者,做一件非常具体的事情。

  2. 鉴于"Helper"是一个非常通用的名称,我觉得仅仅根据它产生的内容来命名方法是不够的。我应该给它命名,这样它的作用就显而易见了。那么MakeRedKeyhole会更好还是BuildRedKeyhole更好呢?我不想使用GetRedKeyhole,因为这意味着我们要返回对现有实例的引用,而不是创建一个全新的实例。

有没有一种模式,你有一个类,它的工作是实例化另一个类的常见实现

我倾向于远离术语"Helper",因为所有的类都应该是有用的,对吧?:)

我认为将其称为工厂或建设者是可以接受的。抽象工厂的目的是封装对象的构造/实例化。它可以返回不同的类型,但不需要。消耗工厂的类型不应该在意。

当它进行这样复杂的构建时,我倾向于使用"构建器"的名称。