7kia / ISpringPractic

0 stars 0 forks source link

Убрать зависимость команд от класса CCanvas #23

Open alexey-malov opened 7 years ago

alexey-malov commented 7 years ago

Вместо этого команды должны требовать некоторый интерфейс или интерфейсы, который бы реализовывался классом CCanvas или его компонентами. Команды должны принимать вместо ссылки на CCanvas ссылку на интерфейс. Это облегчит тестирование классов команд и их повторное использование.

alexey-malov commented 7 years ago

Если какие-то еще сущности зависят от CCanvas, рассмотреть вариант с зависимостью от интерфейса.

alexey-malov commented 7 years ago
alexey-malov commented 7 years ago
alexey-malov commented 7 years ago

Можно также убрать зависимость от класса CCanvas Ввести интерфейс ICanvas:

class ICanvas
{
public:
    virtual ~ICanvas() = default;
    virtual IShapeCollection& GetShapeCollection() = 0;
    virtual Size GetSize()const = 0;
};

class CCanvas : public ICanvas, public IShapeCollection
{
public:
    IShapeCollection& GetShapeCollection()override
    {
        return *this;
    }
};
};
alexey-malov commented 7 years ago
alexey-malov commented 7 years ago
alexey-malov commented 7 years ago