Принятие Вас должно разделить классы для различных регистраторов (хотя это не очевидно в Вашем примере), Ваша внешность решения хорошо, хотя RegistrarA и RegistrarB, вероятно, совместно использует функциональность и мог быть получен из Абстрактный базовый класс .
Как альтернатива Вашему factory
функция, Вы могли указать dict, отобразившись на Ваши классы регистратора:
Registrar = {'test.com': RegistrarA, 'test.biz': RegistrarB}
Затем:
registrar = Registrar['test.com'](domain)
Один каламбур: Вы действительно не делаете Фабрики классов здесь, поскольку Вы возвращаете экземпляры, а не классы.
да, вы можете использовать статический класс. например:
static class Global
{
private static string _globalVar = "";
public static string GlobalVar
{
get { return _globalVar; }
set { _globalVar = value; }
}
}
и для использования в любом месте, где вы можете написать:
GlobalClass.GlobalVar = "any string value"
Или вы можете поместить свои глобальные объекты в app.config
Вы можете использовать статический класс или шаблон Singleton .
В одну сторону,
Обозреватель решений> Ваш проект> Свойства> Параметры. Настройки. Щелкните этот файл и добавьте свои настройки из среды IDE.
Доступ к ним можно получить по
Properties.Settings.Default.MySetting = "hello world";
public static class MyGlobals
{
public static string Global1 = "Hello";
public static string Global2 = "World";
}
public class Foo
{
private void Method1()
{
string example = MyGlobals.Global1;
//etc
}
}