Aan de slagBegin gratis

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

Bekijk cursus

Oefeninstructies

  • Maak een _get_customer()-factorymethode die een customer_type aanneemt 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 de price die wordt doorgegeven aan de make_payment()-methode.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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 = ____.____(____)
    ____.____(____)
Code bewerken en uitvoeren