Einen Factory-Methodenansatz bauen
Jetzt, da du bereit bist, mit dem Erstellen von Factory-Methoden loszulegen, beginnst du mit einer Checkout-Klasse nach dem Factory-Method-Entwurfsmuster. Das folgende Customer-Interface wurde bereits für dich definiert, zusammen mit den konkreten Produkten RewardsMember und NewCustomer. Schau es dir unten an!
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}""")
Diese Übung ist Teil des Kurses
Fortgeschrittene objektorientierte Programmierung in Python
Anleitung zur Übung
- Erstelle eine Factory-Methode
_get_customer(), die einencustomer_typeübernimmt und ein Objekt des passenden konkreten Produkts zurückgibt. - Verwende in der Methode
complete_transaction()die zuvor definierte Factory-Methode, um einen Kunden zurückzugeben, und führe dann mit dem inmake_payment()übergebenenpricedie Zahlung aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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 = ____.____(____)
____.____(____)