静态工厂适用于 C# 吗?
Does Static Factory apply to C#?
我正在阅读静态工厂方法。静态工厂方法编码技术只适用于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);
}
}
是的,它绝对可以在 C# 中应用,而且它通常是一个好主意 - 特别是如果您想要以多种方式构造某些东西,并且所有这些都来自相同的参数类型。
例如,请看TimeSpan
。它有工厂方法 FromSeconds
、FromMinutes
、FromHours
、FromDays
,所有这些方法都接受一个 double
作为参数类型。
工厂方法模式在某些情况下也允许缓存。
Static Factory
是 Factory Method 设计模式的变体,可用于多种语言,而不仅仅是 Java 和 C#。
它们已经存在于 TimeSpan
class 的 C# 中,您可以在其中执行以下操作:
var seconds = TimeSpan.FromSeconds(5);
var minutes = TimeSpan.FromSeconds(25);
我正在阅读静态工厂方法。静态工厂方法编码技术只适用于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);
}
}
是的,它绝对可以在 C# 中应用,而且它通常是一个好主意 - 特别是如果您想要以多种方式构造某些东西,并且所有这些都来自相同的参数类型。
例如,请看TimeSpan
。它有工厂方法 FromSeconds
、FromMinutes
、FromHours
、FromDays
,所有这些方法都接受一个 double
作为参数类型。
工厂方法模式在某些情况下也允许缓存。
Static Factory
是 Factory Method 设计模式的变体,可用于多种语言,而不仅仅是 Java 和 C#。
它们已经存在于 TimeSpan
class 的 C# 中,您可以在其中执行以下操作:
var seconds = TimeSpan.FromSeconds(5);
var minutes = TimeSpan.FromSeconds(25);