我正在阅读有关静态工厂方法的信息。静态工厂方法编码技术仅适用于Java,还是可以适用于C#.Net?似乎更像Java。
https://dzone.com/articles/constructors-or-static-factory-methods
class Color {
private final int hex;
static Color makeFromRGB(String rgb) {
return new Color(Integer.parseInt(rgb, 16));
}
static Color makeFromPalette(int red, int green, int blue) {
return new Color(red << 16 + green << 8 + blue);
}
static Color makeFromHex(int h) {
return new Color(h);
}
private Color(int h) {
return new Color(h);
}
}
答案 0 :(得分:6)
是的,它绝对可以在C#中应用,并且通常是一个好主意-尤其是如果您想以各种方式构造某些东西的时候,都是使用相同的参数类型。
作为示例,请查看TimeSpan
。该类具有工厂方法FromSeconds
,FromMinutes
,FromHours
,FromDays
,它们都接受单个double
作为参数类型。
工厂方法模式还允许在某些情况下进行缓存。
答案 1 :(得分:3)
Static Factory
是Factory Method设计模式的一种变体,可以用于多种语言,而不仅仅是Java和C#。
它们已经存在于TimeSpan
类的C#中,您可以执行以下操作:
var seconds = TimeSpan.FromSeconds(5);
var minutes = TimeSpan.FromSeconds(25);