用策略模式写一个人做某事
时间: 2023-07-18 20:16:35 浏览: 50
好的,以下是用策略模式写一个人做某事的示例代码:
```python
class Person:
def __init__(self, name, strategy):
self.name = name
self.strategy = strategy
def do_something(self):
print(f"{self.name} is going to do something...")
self.strategy.do_something()
class Strategy:
def do_something(self):
pass
class GoToWorkStrategy(Strategy):
def do_something(self):
print("go to work")
class WatchMovieStrategy(Strategy):
def do_something(self):
print("watch a movie")
if __name__ == '__main__':
person1 = Person("Tom", GoToWorkStrategy())
person2 = Person("Jerry", WatchMovieStrategy())
person1.do_something()
person2.do_something()
```
在这个示例中,我们首先定义了一个`Person`类,它拥有一个`do_something`方法,表示这个人要做某件事情。`Person`类的构造函数接受一个策略对象`strategy`作为参数,表示这个人要执行的具体策略。
接下来我们定义了一个`Strategy`抽象基类,它有一个`do_something`方法,但它的具体实现由其子类来完成。
我们又定义了两个具体的策略类,`GoToWorkStrategy`表示这个人要去上班,`WatchMovieStrategy`表示这个人要看电影。
最后我们创建了两个`Person`对象,分别使用不同的策略对象,然后调用`do_something`方法,即可实现这个人做某件事情。