Множественные заводские функции, специфичные для типа или одной общей заводской функции, а затем для ввода типа?

Указатель непосредственно ссылается на местоположение памяти объекта. Java не имеет ничего подобного. Java имеет ссылки, которые ссылаются на местоположение объекта через хеш-таблицы. Вы не можете сделать что-то вроде арифметики указателей в Java с этими ссылками.

Чтобы ответить на ваш вопрос, это только ваши предпочтения. Я предпочитаю использовать синтаксис типа Java.

0
задан Alex Wells 13 July 2018 в 08:35
поделиться

1 ответ

Для ясности я создал решение следующим образом

public static T GetDatabaseServiceFromConfig<T>(string databaseId)
{
    object system = null;

    switch (databaseId)
    {
        case DatabaseIds.<DbName>:
            system = new <DbName>Service(new <DbName>ConfigSettings());
            break;
        // More cases
        default:
            // System not found
            throw new ArgumentOutOfRangeException(databaseId);
        }

    if (!(system is T))
    {
        throw new NotImplementedException("Database type was found and created but does not implement interface: " + typeof(T));
    }

    // Safe cast
    return (T)system;
}

Реализация:

var service = DatabaseServiceFactory.GetDatabaseServiceFromConfig<IProductService>(DatabaseIds.<DbName>);

// object now has access to functions on IProductService
service.CreateProduct(/*Params*/);
0
ответ дан Alex Wells 17 August 2018 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: