User Tools

Site Tools


oop:strategy_pattern

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
oop:strategy_pattern [2026/05/24 09:50] gthanosoop:strategy_pattern [2026/05/25 15:03] (current) – [Α. Προσέγγιση με Κληρονομικότητα] gthanos
Line 33: Line 33:
 </code> </code>
  
-===== Παράδειγμα e-shop =====+===== 1o Παράδειγμα - Shopping Cart με διαφορετικούς τρόπους πληρωμής =====
  
 Φανταστείτε ένα e-shop όπου ο χρήστης μπορεί να επιλέξει πώς θα πληρώσει: με Πιστωτική Κάρτα ή με PayPal. Αντί να γεμίσουμε τον κώδικα με if-else ή switch, χρησιμοποιούμε το Strategy Pattern. Αρχικά ορίζουμε ένα //interface// που περιγράφει τη μέθοδο ("στρατηγική") πληρωμής.  Φανταστείτε ένα e-shop όπου ο χρήστης μπορεί να επιλέξει πώς θα πληρώσει: με Πιστωτική Κάρτα ή με PayPal. Αντί να γεμίσουμε τον κώδικα με if-else ή switch, χρησιμοποιούμε το Strategy Pattern. Αρχικά ορίζουμε ένα //interface// που περιγράφει τη μέθοδο ("στρατηγική") πληρωμής. 
Line 154: Line 154:
 Αν χρησιμοποιήσουμε κληρονομικότητα, θα έπρεπε να φτιάξουμε κλάσεις όπως ''WarriorWithSword'', ''WarriorWithBow'', ''KnightWithSword'' κ.λπ. Αν προσθέσουμε ένα νέο όπλο, πρέπει να φτιάξουμε δεκάδες νέες κλάσεις. Αν χρησιμοποιήσουμε κληρονομικότητα, θα έπρεπε να φτιάξουμε κλάσεις όπως ''WarriorWithSword'', ''WarriorWithBow'', ''KnightWithSword'' κ.λπ. Αν προσθέσουμε ένα νέο όπλο, πρέπει να φτιάξουμε δεκάδες νέες κλάσεις.
  
-<code java DifferentCharacters>+<code java DifferentCharacters.java>
 // Στατικό και δύσκαμπτο // Στατικό και δύσκαμπτο
 class WarriorWithSword extends Character { class WarriorWithSword extends Character {
Line 172: Line 172:
 ==== Β. Προσέγγιση με Strategy Pattern  ==== ==== Β. Προσέγγιση με Strategy Pattern  ====
  
-Εδώ, ο χαρακτήρας έχει ένα όπλο τρατηγική), αλλά δεν είναι άρρικτα συνδεδεμένος με το όπλο του.+Εδώ, ο χαρακτήρας έχει ένα όπλο που υλοποιείται μέσω του Strategy Pattern, αλλά δεν είναι άρρικτα συνδεδεμένος με το όπλο του. Το όπλο μπορεί να αλλάξει στην εξέλιξη του παιχνιδιού.
  
-<code java>+<code java ActionGame.java>
 // 1. Το Strategy Interface // 1. Το Strategy Interface
 interface WeaponBehavior { interface WeaponBehavior {
oop/strategy_pattern.1779616245.txt.gz · Last modified: 2026/05/24 09:50 by gthanos