Aan de slagGa gratis aan de slag

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

Cursus bekijken

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.

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 = ____.____(____)
    ____.____(____)
Code bewerken en uitvoeren