~openerp-community/openobject-doc/6.1

« back to all changes in this revision

Viewing changes to source/developer/1_3_oo_architecture/mvc.rst

  • Committer: TruongSinh Tran
  • Date: 2009-07-19 19:02:35 UTC
  • Revision ID: truongsinh@vipescoserver-20090719190235-fu3bxcrbpvwuk5h7
[FIX] build_i18n.py .. raw:: html

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
MVC - Model, View, Controller 
 
2
=============================
 
3
 
 
4
According to `Wikipedia <http://en.wikipedia.org/wiki/Model-view-controller>`_, "a Model-view-controller (MVC) is an architectural pattern used in software engineering. In complex computer applications that present lots of data to the user, one often wishes to separate data (model) and user interface (view) concerns, so that changes to the user interface do not impact the data handling, and that the data can be reorganized without changing the user interface. The model-view-controller solves this problem by decoupling data access and business logic from data presentation and user interaction, by introducing an intermediate component: the controller."
 
5
 
 
6
.. figure::  images/MVCDiagram.png
 
7
   :scale: 100
 
8
   :align: center
 
9
 
 
10
For example, in the diagram above, the solid lines for the arrows starting from the controller and going to both the view and the model mean that the controller has a complete access to both the view and the model. The dashed line for the arrow going from the view to the controller means that the view has a limited access to the controller. The reasons of this design are :
 
11
 
 
12
    * From **View** to **Model** : the model sends notification to the view when its data has been modified in order the view to redraw its content. The model doesn't need to know the inner workings of the view to perform this operation. However, the view needs to access the internal parts of the model.
 
13
    * From **View** to **Controller** : the reason why the view has limited access to the controller is because the dependencies from the view to the controller need to be minimal: the controller can be replaced at any moment. 
 
14
 
 
15
MVC Model in Tiny ERP
 
16
---------------------
 
17
In Tiny ERP, we can apply this model-view-controller semantic with
 
18
 
 
19
    * model : The PostgreSQL tables.
 
20
    * view : views are defined in XML files in Tiny ERP.
 
21
    * controller : The objects of TinyERP.