2016-08-10 5 views
-1

Ich habe einen Anwendungsfall wie folgt:Wie erstellt man verschiedene Objekte abhängig vom übergebenen Parameter?

Basierend auf dem Parameter übergeben - Ich muss ein Objekt entsprechend erstellen, aber die zugrunde liegende Funktionalität bleibt gleich.

public void selectType() 
{ 
    String type = "ABC"; 
    publishType(type); 
} 

public void publishType(String type) 
{ 
if (type.equals("ABC")) 
ABCtype publishObject = new ABCtype(); 

if (type.equals("XYZ")) 
XYZtype publishObject = new XYZtype(); 

publishObject.setfunctionality(); 
} 

Was ist ein besserer Weg, um dies zu nähern? In welches Designmuster fällt es?

Ein weiterer Zweifel, den ich habe, ist - wie PublishObject zu initialisieren? Es gibt einen Fehler wie folgt.

+1

[Werksmuster] (https://en.wikipedia.org/wiki/Factory_ (Objekt-oriented_programming)) würde gut passen. – SomeDude

+0

FYI: das ist völlig falsch: *** if (type == "ABC") *** Sie vergleichen Referenzen und nicht Inhalt .... –

+2

@Kayaman, dies ist mit dem Design verwandt – JavaHopper

Antwort

1

aber die zugrunde liegende Funktionalität bleibt gleiche

Sie vielleicht Entwurf verklagt Schnittstellen betrachten ..

Sie einige schöne Archi- Entwurf wie:

eine Schnittstelle definieren, und 2 Klassen, die die Schnittstelle implementieren, dann deklarieren Sie ein Objekt foo und initialisieren Sie es gemäß dem Parameter ..

Beispiel

:

interface IObject{ 
    //methods here 
} 
class A implements IObject{} 
class B implements IObject{} 

public void selectType() 
{ 
    IObject foo = getObject(1); 
} 

public IObject getObject(int type){ 
    if (type ==1){ 
     return new A(); 
    }else{ 
     return new B(); 
    } 
} 
Verwandte Themen