Применяется ли Static Factory к C #? - PullRequest
1 голос
/ 16 апреля 2019

Я читаю о статическом заводском методе.Применяется ли метод кодирования статических фабричных методов только к 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);
    }
}

Ответы [ 2 ]

6 голосов
/ 16 апреля 2019

Да, это определенно может быть применено в C #, и это часто хорошая идея, особенно если есть различные способы, которые вы хотите создать, все из одних и тех же типов параметров.

В качестве примера рассмотрим TimeSpan. У него есть фабричные методы FromSeconds, FromMinutes, FromHours, FromDays, каждый из которых принимает один double в качестве типа параметра.

Шаблон фабричного метода также позволяет в некоторых ситуациях кэшировать.

3 голосов
/ 16 апреля 2019

Static Factory является вариацией шаблона проектирования Factory Method и может использоваться на различных языках, не только на Java и C #.

Они уже существуют в C # наTimeSpan класс, где вы можете сделать следующее:

var seconds = TimeSpan.FromSeconds(5);
var minutes = TimeSpan.FromSeconds(25);
...