Quindi ho una classe GUI che chiamerà un'altra classe chiamata ImageProcessor
che contiene una serie di funzioni che eseguiranno algoritmi di elaborazione delle immagini come edgeDetection, gaussianblur, contourfinding, contour map generations, etc.
La GUI passa un'immagine a ImageProcessor
, che esegue uno di quegli algoritmi su di esso e restituisce l'immagine alla GUI da visualizzare. Quindi essenzialmente ImageProcessor
è una libreria di funzioni di elaborazione immagini indipendenti al momento.
Viene chiamato nella GUI come tale
Image image = ImageProcessor.EdgeDetection(oldImage);
Alcune procedure degli algoritmi richiedono molte funzioni e alcune possono essere eseguite in una singola funzione o anche in una sola riga.
Tutte queste funzioni per gli algoritmi integrati in ImageProcessor possono essere piuttosto disordinate e ImageProcessor non sembra che dovrebbe essere una libreria. Quindi stavo pensando di rendere ogni algoritmo una classe con un'interfaccia condivisa diciamo IAlgorithm.
Quindi passo l'interfaccia IAlgorithm dalla GUI al ImageProcessor.
public interface IAlgorithm{
public Image Process();
}
public class ImageProcessor{
public Image Process(IAlgorithm TheAlgorithm){
return IAlgorithm.Process();
}
}
Chiamare la GUI in questo modo
Image image = ImageProcessor.Process(new EdgeDetection(oldImage));
Penso che abbia senso dal punto di vista di un oggetto, ma il problema è che finirò con alcune classi che sono solo una funzione. Cosa ne pensi è un design migliore, o sono entrambi schifo e hai un'idea molto migliore? Grazie!