Софтуерно Инженерство
Loading...
butoff avatar butoff 33 Точки

Инстанциране на нов клас в същия клас. Кога и защо?

От упражнението за създаване на Web Sever 

Някой може ли да разясни, защо се ползва този начин на записване. Авторът така го е записал и Кенов така го записа.

Създава се инстанция и тогава се вика нейния метод Run(), вместо да се извика директно от Main.

public class Launcher : IRunnable
    {
        public static void Main()
        {
            new Launcher().Run();
        }

        public void Run()
        {
            var mainApplication = new GameStoreApp();
            mainApplication.InitializeDatabase();

            var appRouteConfig = new AppRouteConfig();
            mainApplication.Configure(appRouteConfig);

            var webServer = new WebServer(1337, appRouteConfig);

            webServer.Run();
        }
    }

И друг въпрос - защо се слага интерфейс на стартиращия клас (този клас с Main метода)?

Изглежда излишно.

1
C# Web Development Basics
Sanity avatar Sanity SoftUni Team Moderator Trainer Forum Admin 194 Точки

Идеята на Web Server-а и Framework-а, които ще построяваме през курса, са да мимикрират държавния Framework на технологията (ASP.NET).

В ASP.NET Core, принципно се използва статичен Builder Method, който се извиква в Main метода, връщайки Host обект, който се Run-ва. https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.0

Не е въпрос на Pattern а до максимално приближение до това как трябва да изглежда на края. Ако искате можете да го рефакторирате. Въпроса е, че най-вероятно няма да сте консистентни със Server-а който се създава по време на лекциите. Принципно няма проблем за такива структурни промени, стига да не повлиаят на поведението на Server-а.

1