Я только что возобновил работу над старым проектом и подумывал переписать некоторые его части.
Мой вопрос касается того, как структурировать мою программу. Я пытался следовать парадигме MVC. Я начну с объяснения положения вещей:программа обрабатывает 4 типа изображений: Bias, Darks, Flat Fields и Lights. У меня есть класс под названием Image
, который может представлять все это. Уклон и Тьма вычитаются из Света, а затем Свет делится на Плоское Поле. Изначально я собирался использовать для этого 2 класса, один назывался CalibrationImage, а другой - просто Light. Но разница заключалась только в одном методе, которым была бы функция деления, о которой я упоминал выше. В остальном они такие же. Поэтому я решил не использовать для этой цели два класса.
Второй основной класс в программе касается обработки нескольких объектов Image
- этот класс известен как ImageStacker
. На данный момент он содержит объекты Image
в изменяемом массиве. Он может выполнять различные операции с этим массивом, например складывать все изображения, калибровать их и т. Д.
Этот класс также действует как источник данных для объекта NSTableView
в главном окне. Я не думаю, что вместо одного изменяемого массива у меня должно быть 4 массива, каждый из которых предназначен для определенного типа изображения (например, массив для Lights, другой для Darks и т. Д.). Как только программа начнет свою фактическую работу, это будут рамки Darks, Flat Fields и Bias. Затем он откалибрует каждый объект, содержащийся в массиве Lights, и затем сложит их. Я чувствую, что это обеспечивает программе логическое развитие. Его также немного легко визуализировать.
Это хороший дизайн программы? Это следует за MVC? На мой взгляд, мое представление - NSTableView
, контроллер - NSApplication
, а модель - ImageStacker
. Но тогда Изображение
кажется, что оно не является частью MVC, но я не могу понять, как написать программу без него.