I Gruppen von Logik, die von statischen Klassen bestehen, wie:Gruppierung statische Klassen mit dem gleichen Verhalten
static class A {
static int mutate(int i) { /**implementation*/ };
static double prop(double a, double b) { /**implementation*/ };
}
static class B {
static int mutate(int i) { /**implementation*/ };
static double prop(double a, double b) { /**implementation*/ };
}
In diesem Fall A und B sind statische Klassen, die das gleiche Verhaltens über eine Gruppe von Funktionen implementieren (zB mutieren). Ich möchte etwas wie eine Schnittstelle für dieses Muster verwenden, aber da statische Klassen keine Schnittstellen implementieren können, bin ich mir nicht sicher, was ich tun soll. Was ist der beste Weg, um diese Art von Verhalten sauber zu implementieren?
EDIT:
Hier ist ein Beispiel dessen, was ich derzeit tue. Die Klassen haben keinen Zustand, also würde ich sie normalerweise statisch machen.
Interface IMutator {
int mutate(int i);
}
class A : IMutator {
int mutate(int i) { /**implementation*/ };
}
class B : IMutator {
int mutate(int i) { /**implementation*/ };
}
class C {
public List<IMutator> Mutators;
public C(List<IMutator> mutators) {
Mutators = mutators;
}
}
//Somewhere else...
//The new keyword for A and B is what really bothers me in this case.
var Cinstance = new C(new List<IMutator>() {new A(), new B() /**...*/});
gemacht Warum können Sie nicht verwenden, nicht-statische Klassen und Schnittstellen? Gibt es irgendeinen Grund, warum du auf Statik gehst? Was ist die Verwendung dieser Klassen? – dotnetom
In diesen Klassen sind keine Daten vorhanden. Da es sich um reine Funktionsgruppen handelt, erscheint es seltsam, sie nicht statisch zu machen, da jede Instanz identisch wäre. Dies ist jedoch mein derzeitiger Ansatz. – shell
Können Sie eine Beispielnutzung dieser Klassen bereitstellen? Wie viele ähnliche Klassen haben Sie? Nur diese 2, Dutzende, Hunderte? Es ist schwer, eine Alternative zu vorschlagen, wenn der Kontext nicht klar ist. – dotnetom