静态工厂是否适用于C#?

Tom*_*ook 1 c# java factory .net-core .net-core-2.0

我正在阅读有关静态工厂方法的信息。静态工厂方法编码技术仅适用于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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

是的,它绝对可以在C#中应用,并且通常是一个好主意-尤其是如果您想以各种方式构造某些东西的时候,都是使用相同的参数类型。

作为示例,请看TimeSpan。有工厂方法FromSecondsFromMinutesFromHoursFromDays所有这些都接受一个单一double的参数类型。

工厂方法模式还允许在某些情况下进行缓存。