Как организовать классы
От: Doc Россия http://andrey.moveax.ru
Дата: 18.06.13 06:23
Оценка:
Вопрос: как бы вы организовали C# код в следующей ситуации.

Есть некий класс, отвечающий за работу с данными. Для наглядности пусть это будет Image для работы с графикой. Клиентам он предоставляет методы вроде GetPixel, SetPixel, DrawRectangle итд разумеется скрывая подробности как само изображение хранятся.

Задача: обеспечить возможность загрузки и сохранения в различных форматах (bmp, png, jpg).

Пока остановился на таком варианте: есть класс Image, а методы LoadXXXAsync / SaveXXXAsync добавляются как расширения.
Из плюсов
— за каждую операцию отвечает отдельный internal класс, который поддерживать легче, чем один большой load/save.
— просто добавлять новые форматы

Из минусов
— нет возможности напрямую записывать данные из файла в буфер изображения (например по строкам), приходится через GetPixel/SetPixel что несколько медленнее.

Рассматривал варианты в виде наследников Image для каждого формата (не удобно в работе) и единого класса, загружающего и сохраняющего изображения (получается много кода и нарушение SRP).

Но может есть решения лучше?

И второе, какие могут быть минусы, если дать доступ к внутреннему буферу через свойство как internal (т.е. классам загрузки и сохранения достуен, а клиентам нет).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.