Значения конструкции переменной создания объекта

Я пытаюсь выяснить, есть ли решение для следующей проблемы:

Допустим, у меня есть класс с именем OpenFiles. Конструктор требует путь к открываемому файлу и объект, который требуется для OpenFiles.

class OpenFiles
{
    public function __construct(Object $object,$filePath)
    {
        //code      
    }
}

Объект $ всегда один и тот же, его можно найти в каком-то контейнере. Но filePath отличается каждый раз, когда нужен этот класс.

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

Есть шаблон или решение для этого? или это неизбежно?

Заранее спасибо!

1 ответ

Решение

Я бы предложил использовать интерфейс для вашего объекта и использовать интерфейс в качестве входного параметра для вашей функции.

interface iPermissionCollection
{
    public function getPermission($name);
}

затем измените класс, чтобы использовать интерфейс вместо объекта.

class OpenFiles
{
    public function __construct(iPermissionCollection $object,$filePath)
    {
        //code      
    }
}

и если вы хотите отправить другой класс позже, просто убедитесь, что он реализует iPermissionCollection,

Таким образом, вопрос не в том, как бы я справился с рефакторингом кода, если я изменял конструктор класса, который я использую несколько раз, а в том, как бы я написал такой класс, который использовал бы именно то, что ему нужно, и тогда я мог бы масштабироваться.

Другие вопросы по тегам