2016-05-20 10 views
1

Ich fange an, gegen Schnittstellen zu programmieren und versuche zu verstehen, wenn es unnötig ist, eine Methode auf der Schnittstelle zu erklären.Programmierung gegen Schnittstellen: Wann nicht Methoden als Schnittstellenmethoden deklarieren?

Mein konkretes Beispiel ist, ich habe einige Klasse

public class SomeClass : ISomeInterface 
{ 

    public void SomeInterfaceMethod() 
    { 
     if(doOtherStuff() == 1) 
     { 
      // do more stuff 
     } 

    } 

    protected int doOtherStuff() 
    { 
     return 1; 
    } 
} 

Wie kann ich wissen, wenn doOtherStuff soll oder nicht auf der Schnittstelle deklariert werden soll?

Meine Annahme ist, wenn die Methode nicht für die Kommunikation mit anderen Klassen erforderlich ist. Es ist einfach Implementierungsdetails, um die Arbeit zu erledigen.

Genauer gesagt, ich habe einen Nachrichtenbus. Ich versuche zu entscheiden, ob der Handler einer Nachricht eine Interface-Methode sein soll.

+0

@EdHeal Die Sprache ist C# – drizzie

Antwort

4

Nun, semantisch was ist ein ISomeInterface? Was macht es do?

Beispiel: Angenommen, Sie haben eine Schnittstelle:

public interface IDriveable 
{ 
    void Drive(); 
} 

Sie vernünftigerweise etwas erwarten, das diese Schnittstelle etwas zu sein, implementiert, die Sie fahren können. Aber das könnte eine Menge sein.

Ein Car kann IDriveable implementieren. Es wird auch andere Methoden geben, wie zum Beispiel Methoden, um in das Auto hinein oder hinaus zu gelangen oder es mit Gas zu füllen. Diejenigen, keinen Sinn für etwas, das nur „fahrbar * ist, sie nur Sinn für ein Auto machen. So sie dort hingehören. (Oder vielleicht auf andere Schnittstellen, die Car implementiert.)

Es ist kein technisches Problem, es ist eine Frage über die natürliche Semantik der Typen, die Sie erstellen. ISomeInterface sagt mir nicht viel über was es erwartet werden sollte, so ist es ein bisschen zu ausgedacht, um hier zu verwenden.

Wenn ein Mitglied ist für die Schnittstelle, setzen Sie es auf die Schnittstelle.Wenn es nicht ist, nicht. Das ist wirklich alles, was es ist.

Verwandte Themen