Model, View, Controller HOWTO
Join the DZone community and get the full member experience.Join For Free
MVC howto Original vrsion can be found at http://kbrooks.ath.cx/mvchowto/intro.py
#!/usr/bin/python # MVC Howto - Introduction & code # What is "MVC"? # MVC stands for "Model", "View" & "Controller", a way of seperating your code into # manageable and independent chunks that can be changed easily. # Why use MVC? # Because code is independent from each other, it becomes easier for you to change part of the code to do what you want. # For example, you could change where data is shown without changing anything else! # Copyright (c) 2006 Kyle Brooks. Licensed under the Creative Commons Attribution License. # We will be creating a command line calculator in this HOWTO. import sys # Model: a object that interfaces with the real world and returns information. class Model: def calculate(self, left, op, right): if op == "+": return left + right elif op == "-": return left - right # As you see in the code above, the model has the action "calculate". # View: a object that gets passed the result from the model via the controller. Displays data. class View: def display_data(self, result): print result # As you see in the code above, ALL the view does is display data from the controller. # Controller: a object that holds a reference to the model and view. Communicates with the model and view. Handles data from the user. class Controller: operands = ["+", "-"] def __init__(self, model, view): self.model = model self.view = view def run(self): sys.stdout.write(">> ") sys.stdout.flush() # read a line line = sys.stdin.readline() line = line.strip() if line == "": sys.stdout.write("\n>> ") sys.stdout.flush() return for operand in self.operands: larray = line.split(operand) if larray == line: continue else: break else: sys.stdout.write("NaN\n") sys.stdout.flush() return larray = int(larray) larray = int(larray) result = self.model.calculate(*larray) self.view.display_data(result)
Opinions expressed by DZone contributors are their own.