Вверх ↑
Администрация
Ответов: 15294
Рейтинг: 1518
#1: 2017-04-03 21:02:23 ЛС | профиль | цитата
  Объединение или слияние типов должно быть обусловлено только инструментами, которые предоставляет целевой язык и конечно же архитектурой пакета. Если у вас предположим есть класс для работы с данными в файле, памяти, сети (ftp, http - не важно), где угодно еще и у них есть общий предок, то должен быть один тип у точек. Если у них нет общего предка, но работа с ними абсолютно идентична, то вы должны сделать класс обертку для всех источников данных.

  Если встречается ситуация, как в примере выше (т.е. есть к примеру Canvas и есть Bitmap, который напрямую не предоставляет канву для рисования, но может это сделать через внешний класс или вызов одного из своих методов), то лучше всего выходить из такой ситуации следующим образом: в элементах, которые рисуют на Canvas отправлять "наверх" информацию о том, какой именно интерфейс требуется от точки и если Bitmap видит, что от него запрашивают Canvas, то он может его сам создать и вернуть то, что от него просят. При такой реализации для пользователя все будет прозрачно и усложнение коснется только кода элементов. В одном из пакетов на FTCG таким образом имитировался интерфейс массива и элементы могли предоставлять точку Array не имея массива в реализации кода целевого языка вообще (правда назвать это хорошей практикой нельзя - все же лучше писать классы обертки).
карма: 26
0