通用共享方法放在哪里


9

我有一堆方法到处都是。现在,该代码文件被命名为全局变量,以表示它们实际上是全局变量的事实。

但是,我不喜欢这样。

我想将它们分组为一个类并传递一个接口。我只会做一个实例,但我不会陷入这里的单例陷阱。

首先,我应该给班级命名。我想避免使用全域名称,因为恐怕维护人员会想到错误的主意。

另外,我应该如何考虑拆分这样的一组方法,以便行为可以改变和适应?

方法集包含以下内容:

  • 转换表
  • 剪贴板互动
  • 管理内置字体
  • 常用绘图方法
  • 提供访问常用资源的界面

这些就像不保存状态的纯Util方法还是保存状态?
TheLQ 2011年

+1表示不掉入单例陷阱。
Caleb

@TheLQ他们不一定保存状态,但是为了方便起见,它们将保存const数据(如转换表)。
Lee Louviere

Answers:


4

命名空间可以是 [application].Common.Shared

类可以命名为:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

我将分班,因为听起来他们做的事情不同。


1

如果要创建一个实例,则几乎只有一个单例。同样,如果人们谈论单例陷阱,通常会指的是单例是全局的,并且大多数类最好不是全局的。因此,您最好也有一个单身人士。如果您可以合理地将接口传递给可能要调用它的对象,那么它实际上并不是全局的。

同样,将所有这些放到全局方法的抓包中,很难改变行为和适应行为,因为对一个方法的每次更改不仅需要一个新的子类,而且每种更改的组合都需要它自己的子类。

我建议为每个真正具有全局性的单身人士(我相信你都说),并为您提供实例的某种注册表或工厂(这意味着您可以将其实现为单身人士,因为接口会不做任何承诺)。我会根据呼叫者的观点对它们进行命名。


1

我通常将这些类型的东西放在自己的程序集名称中,例如“ foo.Common.Collections”或“ foo.common.UI”等,将其命名为“ foo.Common”。然后,我可以在任何项目中引用该程序集我需要他们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.