class Processer
{
private function processChat() { }
private function processUsers() { }
private function processBuys() { }
private function processOrders() { }
}
Ich würde normalerweise verwenden:Php, ist das eine ekelhafte Lösung? Führen Sie alle Methoden mit einer Zeichenfolge beginnen
public function do()
{
$this->processChat();
$this->processUsers();
$this->processOrders();
}
aber seine leicht zu vergessen, die neue Funktion aufzurufen (wie ich absichtlich die processBuys()
Methode verpasst).
Wenn ich Refactoring es wie folgt aus:
public function do()
{
foreach (get_class_methods($this) as $m)
{
if (substr($m, 0,7) == 'process')
{
$this->$m();
}
}
}
es funktioniert, aber scheint hässlich zu sein (nicht machbar in Java, zum Beispiel)
das sein könnte auch in Java, obwohl es wahrscheinlich keine gute Lösung wäre. Letztendlich suchst du nach einer funktionalen Programmierlösung, für die Java nicht gedacht war (jedenfalls vor Java 8). Wie auch immer, diese Frage ist zwar meinungsorientiert (und damit off-topic), also würde ich sie umgestalten, um mehr faktenbasierte Antworten zu erhalten. – nbrooks
Dies ist in Java mit Reflektion möglich. Wenn Sie nicht einen Rahmen oder einen gemeinsamen Code schreiben, würde ich nicht vorschlagen, es zu tun. Die Reihenfolge der ausgeführten Methoden ist nicht programmiert und kann zu Problemen führen. – sashwat
ist die Frage über die Implementierung der gleichen in Java? –