Handler: Автоматизирано избиране

C++ JAVA
Post Reply
User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3351
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Handler: Автоматизирано избиране

Post by dakata__92 » Wed Nov 18, 2020 9:31 am

Колеги, седя и се чудя как да си автоматизира клас „Manager“, от който да взимам инстанциите на други класове? Иска ми се да не губя и autocomplete. В момента се чудя как мога да подобря този вариант:

Code: Select all

class Manager
{
    private static $handler = null;
    private static $multi = null;

    public static function handler()
    {
        if (empty(self::$handler)) {
            self::$handler = new Handler();
        }
        return self::$handler;
    } 
    
    public static function multi()
    {
        if (empty(self::$multi)) {
            self::$multi = new MultiHandler();
        }
        return self::$multi;
    }
}
В момента викам двете функции по отделно.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3351
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Handler: Автоматизирано избиране

Post by dakata__92 » Thu Nov 19, 2020 7:51 am

Никой ли няма предложение, как да се получи по-добре Manager-а?

Fakeheal
Гуру
Гуру
Posts: 2715
Joined: Sat Apr 17, 2010 6:37 am
Answers: 351
Location: /r/eyebleach
Contact:

Re: Handler: Автоматизирано избиране

Post by Fakeheal » Thu Nov 19, 2020 8:09 am

Какъв е този Manager? Какво прави? Къде го ползваш? Какво е $multi, какво е $handler?

Всичко е статично, наподобява на бегъл singleton, но всъщност е като 2 глобални променливи, които не се презаписват.

Code: Select all

 public static function handler(): Handler 
Това не е ли достатъчно :D

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3351
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Handler: Автоматизирано избиране

Post by dakata__92 » Thu Nov 19, 2020 9:21 am

Имам един клас, в който ми се налага да държа две инстанции на два класа с общ интерфейс.
class First extends Manager
Идеята ми е да мога спокойно да извикам инстанциите на handler или multi класовете.
$v = First::handler()->init();
$v2 = First::multi()->init();

Чудя се просто дали това е достатъчно добро решение или може и с по-креативен и изчистен вариант.

Post Reply