Nach einer starren Interpretation des objektorientierten Designs ist eine Gebrauchsklasse zu vermeiden.
Das Problem ist, dass Sie, wenn Sie einer starren Interpretation folgen, Ihre Klasse in ein Sortierobjekt zwingen müssen, um viele Dinge zu erreichen.
Sogar die Java-Designer erstellen Dienstprogrammklassen (java.lang.Math fällt mir ein)
Ihre Optionen sind:
double distance = Math.sqrt(x*x + y*y); //using static utility class
vs:
RootCalculator mySquareRooter = new SquareRootCalculator();
mySquareRooter.setValueToRoot(x*x + y*y);
double distance;
try{
distance = mySquareRooter.getRoot();
}
catch InvalidParameterException ......yadda yadda yadda.
Selbst wenn wir die ausführliche Methode vermeiden würden, könnten wir dennoch Folgendes erreichen:
Mathemetician myMathD00d = new Mathemetician()
double distance = myMathD00d.sqrt(...);
In diesem Fall ist .sqrt () immer noch statisch. Worum geht es also bei der Erstellung des Objekts überhaupt?
Die Antwort lautet: Erstellen Sie Dienstprogrammklassen, wenn Ihre andere Option darin besteht, eine künstliche "Worker" -Klasse zu erstellen, die beispielsweise keine oder nur geringe Verwendung von Variablen hat.
java.lang.Math
ist 100% statische Methoden mit einemprivate
Konstruktor (kann nicht instanziiert werden).