#java #c# #.net-core #factory #.net-core-2.0
#java #c# #.net-ядро #фабрика #.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);
}
}
Ответ №1:
Да, это определенно можно применить в C #, и часто это хорошая идея, особенно если вы хотите что-то сконструировать различными способами, используя одни и те же типы параметров.
В качестве примера посмотрите на TimeSpan
. У этого есть фабричные методы FromSeconds
, FromMinutes
, FromHours
, FromDays
все из которых принимают один double
в качестве типа параметра.
Шаблон фабричного метода также допускает кэширование в некоторых ситуациях.
Комментарии:
1. спасибо, по какой-то причине все примеры, которые я читал в Интернете, применимы к Java, впервые я услышал об этом, когда начал изучать Java и читать «Эффективную Java» от Джошуа Блоха, я прочитал много книг по C # и никогда не слышал до сих пор
Ответ №2:
Static Factory
является вариацией шаблона проектирования фабричного метода и может использоваться на разных языках, а не только на Java и C #.
Они уже существуют в C # в TimeSpan
классе, где вы можете выполнить следующее:
var seconds = TimeSpan.FromSeconds(5);
var minutes = TimeSpan.FromSeconds(25);