Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz metodę wytwórczą _get_customer(), która przyjmuje argument customer_type i 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ą metody make_payment(), przekazując jej argument price.

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 = ____.____(____)
    ____.____(____)
Edytuj i uruchom kod