Я писал простую программу и разработал простую текстовую абстракцию - расположение на экране X / Y, размер поля X / Y, текст внутри и выравнивание.
Но теперь у меня есть эта абстракция, которая является просто набором получателей и установщиков. Обычно я просто делаю это общедоступным элементом данных, но проблема в том, что я не могу просто добавить элементы данных, потому что в будущем существует альтернативный путь кода, в котором они не существуют в моем коде, но внешняя библиотека. Теперь у меня ужасно неуклюжий интерфейс get / set (несколько улучшенный цепочкой методов). Что я могу сделать, чтобы сделать его чище?
Редактировать: определение моего класса.
class Text {
public:
enum TextLayout {
TopLeft,
TopRight,
BottomLeft,
BottomRight,
Center
};
// Text
virtual string GetText() = 0;
virtual Text* SetText(const string& ref) = 0;
virtual Text* SetText(string&& ref) = 0;
// Position
virtual int GetPositionX() = 0;
virtual Text* SetPositionX(int x) = 0;
virtual int GetPositionY() = 0;
virtual Text* SetPositionY(int y) = 0;
virtual int GetSizeX() = 0;
virtual Text* SetSizeX(int sizex) = 0;
virtual int GetSizeY() = 0;
virtual Text* SetSizeY(int sizey) = 0;
virtual TextLayout GetTextLayout() = 0;
virtual Text* SetTextLayout(TextLayout layout) = 0;
virtual std::shared_ptr<Font> GetFont() = 0;
virtual Text* SetFont(const std::shared_ptr<Font>&) = 0;
virtual Text* SetFont(std::shared_ptr<Font>&&) = 0;
virtual Text* SetColour(unsigned int colour) = 0;
virtual unsigned int GetColour() = 0;
virtual Render* GetRender() = 0;
virtual ~Text();
};