2016-08-01 23 views
1

Ich schreibe etwas Java-Code für eine Universitätsprüfung und das Projekt basiert auf einem "E-Commerce". Eine der Anforderungen ist, die Produkte in den Einkaufswagen zu legen und ich muss das Muster Visitor verwenden. example visitorBesucher Entwurfsmuster - E-Commerce

Dies ist ein Beispiel, das der Professor mir gegeben hat, und ich muss es "verwenden", um meinen Einkaufswagen darzustellen. Das Problem ist, dass ich eine Product Klasse habe, die eine Einheit der Category Klasse und Produktliste oder Kategorienliste enthält, die in der Datenbank gespeichert sind (ich greife auf sie per Abfrage bei jedem Schritt zu).

Nun, vor allem ... book ist eine Kategorie oder ein Produkt? Es könnte zum Beispiel mit Smartphone oder htc one m8 verglichen werden? Außerdem habe ich eine Klasse, die den gesamten vom Client "verwendeten" Code enthält. Dort habe ich kein ShoppingCart-Objekt, sondern einen einfachen ArrayList of Products, der sich auf den Benutzer bezieht.

Wie kann ich dieses Muster in meinem Projekt implementieren? Welches ist der Weg?

Vielen Dank im Voraus.

+0

Für jetzt nichts ... Ich habe den Warenkorb ohne das Muster implementiert ... Ich verwende eine einfache ArrayList des Produkts weil ich nicht nachvollziehen kann, wie und wo ich meinen Code ändern muss. –

+0

Ich habe einige andere Muster wie Singleton und Strategie verwendet, aber diese ist für mich ein Problem ... –

+2

Von der Stack-Überlauf- "Hilfe" -Seite: [Fragen, die nach Hausaufgabenhilfe fragen, müssen eine Zusammenfassung der Arbeit enthalten Sie haben so weit gemacht, um das Problem zu lösen, und eine Beschreibung der Schwierigkeit, die Sie haben, es zu lösen.] (http://stackoverflow.com/help/on-topic) –

Antwort

1

es ist sehr einfach, tatsächlich, zum Beispiel in der Hauptklasse, wenn der Benutzer 2 Elemente hinzugefügt:

int totalPrice = 0; 
    ShoppingCartVisitor cart = new ShoppingCartVisitorImpl(); 
    ItemElement element1 = new Fruit(2,3,"Apple"); 
    ItemElement element2 = new Book(30,"some ISBN number"); 
    totalPrice += element1.visit(cart); 
    totalPrice += element2.visit(cart); 

Sowohl bei Obst und Buch, das Sie hinzufügen:

public void accept(ShoppingCartVisitor v) { 
    v.visit(this); 
} 

und in ShoppingCartVisitorImpl:

public int visit(Book b) { 
    return b.getPrice(); 
} 

public int visit(Fruit f) { 
    return f.getPricePerKg()*f.getWeight(); 
}