Создание фабричного метода
Теперь, когда вы готовы приступить к созданию фабричных методов, начнём с написания класса Checkout, используя паттерн «фабричный метод». Интерфейс Customer уже определён для вас, а вместе с ним — конкретные продукты RewardsMember и 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}""")
Это упражнение является частью курса
Объектно-ориентированное программирование на Python: средний уровень
Инструкции к упражнению
- Создайте фабричный метод
_get_customer(), который принимает параметрcustomer_typeи возвращает объект соответствующего конкретного продукта. - В методе
complete_transaction()используйте ранее определённый фабричный метод, чтобы получить объект покупателя, а затем выполните оплату с помощью методаmake_payment(), передав ему значениеprice.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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 = ____.____(____)
____.____(____)