工厂模式实现用面向象思想解决饭店会员消费问题,酒店会员分为三个等级:钻石会员,黄金 会员,白银会员。钻石会员享受用餐5折待遇,黄金会员享受7折待遇,白银会员 享受9折待遇,饭店会用一种核算消费的方法计算三种会员的消费
时间: 2023-10-04 19:04:45 浏览: 53
首先,我们需要定义一个会员类,包含会员等级和享受的折扣率:
```python
class Member:
def __init__(self, level, discount):
self.level = level # 会员等级
self.discount = discount # 折扣率
```
然后,我们可以创建三个会员对象,分别代表钻石会员、黄金会员和白银会员:
```python
diamond_member = Member("钻石会员", 0.5)
golden_member = Member("黄金会员", 0.7)
silver_member = Member("白银会员", 0.9)
```
接下来,我们实现一个工厂类,根据不同的会员等级创建相应的会员对象:
```python
class MemberFactory:
@staticmethod
def create_member(level):
if level == "钻石会员":
return diamond_member
elif level == "黄金会员":
return golden_member
elif level == "白银会员":
return silver_member
else:
raise ValueError("无效的会员等级")
```
最后,我们可以用一种核算消费的方法计算三种会员的消费:
```python
class Restaurant:
def calculate_bill(self, level, amount):
member = MemberFactory.create_member(level)
bill = amount * member.discount
return bill
```
这样,我们就可以根据不同的会员等级计算消费了。例如,如果要计算钻石会员消费100元的账单,可以这样调用:
```python
restaurant = Restaurant()
bill = restaurant.calculate_bill("钻石会员", 100)
print(f"钻石会员消费{bill}元")
```