Budowanie metody wytwórczej
Skoro czas zabrać się do tworzenia metod wytwórczych, zaczniesz od zbudowania klasy Checkout z wykorzystaniem wzorca projektowego metody wytwórczej. Poniżej znajdziesz już gotowy interfejs Customer oraz konkretne produkty: RewardsMember i NewCustomer.
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}""")
To ćwiczenie jest częścią kursu
Programowanie obiektowe w Pythonie – poziom średnio zaawansowany
Instrukcje do ćwiczenia
- Utwórz metodę wytwórczą
_get_customer(), która przyjmuje argumentcustomer_typei zwraca obiekt odpowiedniego konkretnego produktu. - W metodzie
complete_transaction()użyj wcześniej zdefiniowanej metody wytwórczej, aby pobrać klienta, a następnie wywołaj płatność za pomocą metodymake_payment(), przekazując jej argumentprice.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 = ____.____(____)
____.____(____)