Насколько быстро создается экземпляр класса с помощью методов, но без полей или свойств?

В общем случае создание экземпляров классов с методами, но без полей или свойств, имеет много накладных расходов?

Я разрабатываю приложение ASP.NET MVC, которое активно использует внедрение конструктора, а некоторые контроллеры пока имеют до 10 зависимостей. Но из-за большого количества зависимостей я прибегнул к IMyAppServiceProviderинтерфейсу и классу, который обеспечивает общий доступ ко всем зависимостям через DependencyResolver в MVC 3.

Я вырвал весь код своего приложения. и создал Gistс моей базовой настройкой (однако это не включает настройку BaseController, упомянутую ниже).

Я также создал класс BaseController, который принимает IMyAppServiceProvider. Все контроллеры наследуются от этого базового класса. Базовый класс принимает объект IMyAppServiceProviderи имеет защищенные переменные для всех различных служб. Код выглядит примерно так:

public class BaseController
{
    protected IService1 _service1;
    protected IService2 _service2;
    protected IService3 _service3;
    // ...

    public BaseController(IMyAppServiceProvider serviceProvider)
    {
        _service1 = serviceProvider.GetService;
        _service2 = serviceProvider.GetService;
        _service3 = serviceProvider.GetService;
        // ...
    }
}

Это делает код для контроллеров "безупречным". Нет закрытых/защищенных переменных, нет назначений в конструкторе, а на службы ссылаются защищенные переменные базового класса.Однако каждый запрос будет создавать экземпляр каждой отдельной службы, которую использует мое приложение, независимо от того, использует ли конкретный контроллер их все или нет.

Мои сервисы просты и содержат только вызовы методов с некоторой бизнес-логикой и взаимодействием с базой данных. Они не имеют состояния и не имеют полей или свойств класса. Следовательно, создание экземпляра должно быть быстрым, но мне интересно, является ли это лучшей практикой (я знаю, что это загруженный термин).

5
задан John Bubriski 13 March 2012 в 20:20
поделиться