有没有一种模式,你有一个类,它的工作是实例化另一个类的常见实现
本文关键字:工作 实例化 实现 常见 另一个 有一个 一种 模式 有没有 | 更新日期: 2023-09-27 18:22:14
我想称它为"Helper",但这似乎太笼统了。
假设我有一个名为WidgetCranker
和WidgetCranker
的类,可以设置为生成Square
、Keyhole
和GearShape
类型的小部件。我还可以指定我希望我的小部件是哪个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");
我的问题有两个:
这是一个实际的设计模式吗?如果是,我们该怎么称呼它?我想称之为工厂,但它绝对不是工厂模式。我们在每种情况下都创建完全相同类型的对象,只是以不同的方式实例化它们。我知道这是一种"帮助者",但如果可以的话,我想更具体一些。它是一个帮助者,做一件非常具体的事情。
鉴于"Helper"是一个非常通用的名称,我觉得仅仅根据它产生的内容来命名方法是不够的。我应该给它命名,这样它的作用就显而易见了。那么
MakeRedKeyhole
会更好还是BuildRedKeyhole
更好呢?我不想使用GetRedKeyhole
,因为这意味着我们要返回对现有实例的引用,而不是创建一个全新的实例。
我倾向于远离术语"Helper",因为所有的类都应该是有用的,对吧?:)
我认为将其称为工厂或建设者是可以接受的。抽象工厂的目的是封装对象的构造/实例化。它可以返回不同的类型,但不需要。消耗工厂的类型不应该在意。
当它进行这样复杂的构建时,我倾向于使用"构建器"的名称。