Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2) ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2) ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD"— Μεταγράφημα παρουσίασης:

1 Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2) ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD

2 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 2 Factory Method (Εργοστάσιο) (1/5) Υλοποίηση με Concrete Factor (- Creator) Παράδειγμα 1 ο : Υλοποίηση με Concrete Factor (- Creator) interface Product { } class ConcreteProduct implements Product { } //factory abstract class Creator { public void anOperation(){Product product = factoryMethod();} protected abstract Product factoryMethod(); } class ConcreteCreator extends Creator { protected Product factoryMethod() {System.out.println("H klasi ConcreteProduct tha ylopoihsei to stygmiotypo"); return new ConcreteProduct(); }} class Client { public static void main( String arg[] ) { Creator creator = new ConcreteCreator(); creator.anOperation();}}

3 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 3 Factory Method (Εργοστάσιο) (2/5) Παράδειγμα 2 ο Στο παράδειγμα αυτό το ProductB θα αντιστρέφει το όνομα που εισάγεται. Το ProductΑ απλώς καλείται… abstract class Product { public void writeName(String name) {System.out.println("To onoma einai: "+name);}} class ProductA extends Product { } class ProductB extends Product { public void writeName(String name) { StringBuilder tempName = new StringBuilder().append(name); System.out.println("To antistrofo tou onomatos einai: " + tempName.reverse());}} class ProductFactory { Product createProduct(String type) { if(type.equals("B")) return new ProductB(); else return new ProductA();}}

4 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 4 Factory Method (Εργοστάσιο) (3/5) public class TestClientFactory { public static void main(String[] args) { ProductFactory pf = new ProductFactory(); Product prod; prod = pf.createProduct("A"); prod.writeName("Nikas Nikos"); prod = pf.createProduct("B"); prod.writeName("Nikas Nikos"); }

5 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 5 Factory Method (Εργοστάσιο) (4/5) Παράδειγμα 3 ο Στο παράδειγμα αυτό θα δημιουργούμε στιγμιότυπα διαφορετικών τύπων σκύλων, ανάλογα με κριτήρια που δίνουμε…. interface Dog {public void ratsa ();} class Poodle implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Poodle"); }} class Rottweiler implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Rottweiler"); }} class SiberianHusky implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Husky"); }} class DogFactory { public static Dog getDog(String criteria) { if ( criteria.equals("A") ) return new Poodle(); else if ( criteria.equals("B") ) return new Rottweiler(); else if ( criteria.equals("C") ) return new SiberianHusky(); return null; }}

6 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 6 Factory Method (Εργοστάσιο) (5/5) class JavaFactoryPatternExample { public static void main(String[] args) { Dog dog = DogFactory.getDog("A"); dog.ratsa(); dog = DogFactory.getDog("B"); dog.ratsa(); dog = DogFactory.getDog("C"); dog.ratsa(); }}

7 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 7 Abstract Factory (Αφηρημένο Εργοστάσιο) (1/3) Παράδειγμα: Δημιουργία buttons – τύπου Windows ή Mac. Το αποτέλεσμα θα είναι ένα από τα δύο κουμπιά ανάλογα την παράμετρο που δίνουμε. Ο πελάτης (Application) δεν γνωρίζει ποιο GUIFactory δίνεται και ακόμη ποιο κουμπί θα δημιουργηθεί.

8 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 8 Abstract Factory (Αφηρημένο Εργοστάσιο) (2/3) interface GUIFactory {public Button createButton();} class WinFactory implements GUIFactory { public Button createButton() { return new WinButton(); }} class MacFactory implements GUIFactory { public Button createButton() { return new MacButton(); }} interface Button {public void paint();} class WinButton implements Button { public void paint() { System.out.println("to koumpi einai typoy: WinButton"); }} class MacButton implements Button { public void paint() { System.out.println("to koumpi einai typoy: MacButton"); }}

9 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 9 Abstract Factory (Αφηρημένο Εργοστάσιο) (3/3) class Application { public Application(GUIFactory factory){ Button button = factory.createButton(); button.paint(); }} public class ApplicationRunner { public static void main(String[] args) { new Application(createOsSpecificFactory()); } public static GUIFactory createOsSpecificFactory() { int typos = 0; if (typos == 0) { return new WinFactory(); } else { return new MacFactory(); }}}

10 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 10 Template Method (Μέθοδος Υπόδειγμα) (1/3) Παράδειγμα: Διαφορετικές υλοποιήσεις μεθόδων σε διαφορετικά φαγητά… abstract class Meal { // template method public final void doMeal() { prepareIngredients(); cook(); eat(); cleanUp(); } public abstract void prepareIngredients(); public abstract void cook(); public void eat() {System.out.println("Mmm, poly nostimo...");} public abstract void cleanUp(); }

11 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 11 Template Method (Μέθοδος Υπόδειγμα) (2/3) class FrikaseMeal extends Meal { //Override tis parakatv methodous public void prepareIngredients() {System.out.println("Arnaki, marouli, kremydakia");} public void cook() {System.out.println("Brasimo se hytra h katsarola...");} public void cleanUp() {System.out.println("Plisimo tvn piatvn...");}} class PsitiSardelaMeal extends Meal { //Override tis parakatv methodous public void prepareIngredients() {System.out.println(“Sardeles me ladi kai lemoni...");} public void cook() {System.out.println("Vazeis tis Sardeles sto tapsi kai tis psineis.....");} public void eat() {System.out.println("Oi psites Sardeles einai poly nostimes...");} public void cleanUp() {System.out.println("Kalo plysimo tvn piatvn");}}

12 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 12 Template Method (Μέθοδος Υπόδειγμα) (3/3) public class Demo { public static void main(String[] args) { Meal meal1 = new FrikaseMeal(); meal1.doMeal(); System.out.println(); Meal meal2 = new PsitiSardelaMeal(); meal2.doMeal(); }}


Κατέβασμα ppt "Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2) ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google