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