mvc框架与观察者模式案例
时间: 2024-06-13 09:09:05 浏览: 16
以下是一个MVC框架与观察者模式的案例:
假设我们正在开发一个简单的计算器应用程序。我们可以使用MVC框架来实现该应用程序,其中Model表示计算器的逻辑,View表示计算器的用户界面,Controller表示用户界面和逻辑之间的桥梁。
我们还可以使用观察者模式来实现Model和View之间的通信。当Model中的数据发生更改时,它将通知所有已注册的观察者(即View),以便它们可以更新自己的状态。
以下是一个简单的Python代码示例,演示了如何使用MVC框架和观察者模式来实现计算器应用程序:
```python
# Model
class Calculator:
def __init__(self):
self._result = 0
self._observers = []
def add(self, x, y):
self._result = x + y
self._notify_observers()
def subtract(self, x, y):
self._result = x - y
self._notify_observers()
def register_observer(self, observer):
self._observers.append(observer)
def _notify_observers(self):
for observer in self._observers:
observer.update(self._result)
# View
class CalculatorView:
def __init__(self, controller):
self._controller = controller
self._result = 0
def update(self, result):
self._result = result
self._display_result()
def _display_result(self):
print("Result: {}".format(self._result))
def run(self):
while True:
operation = input("Enter operation (+ or -): ")
if operation == '+':
x = int(input("Enter first number: "))
y = int(input("Enter second number: "))
self._controller.add(x, y)
elif operation == '-':
x = int(input("Enter first number: "))
y = int(input("Enter second number: "))
self._controller.subtract(x, y)
else:
print("Invalid operation")
# Controller
class CalculatorController:
def __init__(self):
self._model = Calculator()
self._view = CalculatorView(self)
self._model.register_observer(self._view)
def add(self, x, y):
self._model.add(x, y)
def subtract(self, x, y):
self._model.subtract(x, y)
def run(self):
self._view.run()
# Main
if __name__ == '__main__':
controller = CalculatorController()
controller.run()
```