Een factorymethode bouwen
Nu je klaar bent om aan de slag te gaan met het bouwen van factorymethoden, begin je met het maken van een Checkout-klasse met het factory method-designpatroon. De volgende Customer-interface is al voor je gedefinieerd, samen met de concrete producten RewardsMember en NewCustomer. Bekijk ze hieronder!
class Customer(ABC):
@abstractmethod
def make_payment(self, price):
pass
class RewardsMember(Customer):
def make_payment(self, price):
print(f"""Total price for rewards member is
${price * .90}, which is 10% off""")
class NewCustomer(Customer):
def make_payment(self, price):
print(f"""Total price for new customer is ${price}""")
Deze oefening maakt deel uit van de cursus
Gevorderde objectgeoriënteerde programmering in Python
Oefeninstructies
- Maak een
_get_customer()-factorymethode die eencustomer_typeaanneemt en een object van het juiste concrete product retourneert. - Gebruik in de
complete_transaction()-methode de eerder gedefinieerde factorymethode om een klant te retourneren en doe vervolgens een betaling met depricedie wordt doorgegeven aan demake_payment()-methode.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
class Checkout:
# Create a _get_customer() factory method
def ____(self, customer_type):
if ____ == "Rewards Member":
return ____()
elif ____ ____ "New Customer":
return ____()
# Define the complete_transaction() method
def complete_transaction(self, customer_type, price):
customer = ____.____(____)
____.____(____)