2016-08-11 3 views
0

Ich benutze Laravel 5.2, um ein abstraktes System zu erstellen. Wenn ein Kunde eine bestimmte Implementierung benötigt, muss ich einige Teile des Codes überschreiben.Stimmt das mit konkreten Implementierungen?

Was ich denke, ist so etwas wie dieses Szenario:

A-Controller auf einige benutzerdefinierte Anfrage abhängt (Beton) standardmäßig aktiviert. Wenn ein Kunde eine andere Geschäftsregel anfordert, müsste ich diese benutzerdefinierte Anforderung erweitern und diese untergeordnete Implementierung an den übergeordneten binden. Tun Sie etwas wie das auf meinem Provider:

Über Softwarearchitekturkonzepte sprechen, kann ich es tun? Ist es richtig?

[EDIT]

Ein konkretes Beispiel habe ich eine Aktion, die eine Anfrage wie folgt verwendet:

class SomeController extends Controller 
{ 

    public function someAction(ParentRequest $request) 
    { 
     # perform action 
    } 

} 

Meine Anfrage einige Geschäfte Validierungslogik haben:

class ParentRequest extends Request 
{ 

    public function rules() 
    { 
     return [ 
     'a_field' => 'required', 
     'b_field' => 'max:100' 
     ]; 
    } 

} 

Jetzt ist alles funktioniert, meine Standardsystemlogik ist in Ordnung! Aber meine Software ist eine Basis für andere Projekte, wir werden es über Composer verwenden und bei den endgültigen Projekten wird nur der spezifische Code zum App-Pfad gehören.

Wenn ein Kunde nach einer Änderung der Geschäftslogik fragt, müssen wir die alte überschreiben. Meine Frage ist: ist es richtig? Kann ich, konzeptionell gesprochen, etwas wie diesen Code unten tun?

class ChildRequest extends ParentRequest 
{ 

    public function rules() 
    { 
     return [ 
     'a_field' => '', 
     'b_field' => 'max:255' 
     ]; 
    } 

} 

Und dann, es bindet alle Abhängigkeiten des Projektes außer Kraft zu setzen:

class AppServiceProvider extends ServiceProvider 
{ 

    public function register() 
    { 
     $this->app->bind(ParentImpl::class, ChildImpl::class); 
    } 

} 
+0

Können Sie bitte diese Frage genauer erklären? Deine Erklärung ist weit abstrakt zu verstehen. –

+1

@SupunWijerathne Ich habe es bearbeitet :) –

Antwort

0

Im Gespräch mit einem Lehrer von mir, sagte er, ich kann nicht einen perfekten Job machen. Ich muss immer wieder daran arbeiten. Was ich gefragt habe, ist vielleicht kein falsches Muster, aber das Konzept der Software ist wahrscheinlich falsch.

Ich werde viele Basis-Pakete in kleinen Maßstab machen, in einer Weise, die es leichter zu refaktorieren. Wenn ein Kunde nach einem neuen Feature oder einer neuen Geschäftsregel fragt, entwickle ich es.

Entwickeln Sie Software extrem abstrakt vielleicht falsch. Es kann alles machen und ist nicht spezifisch für die Bedürfnisse des Kunden. Es muss immer analysiert werden. Es gibt keine Regel, jede Software ist eine andere Geschichte

Verwandte Themen