zoukankan      html  css  js  c++  java
  • 解藕的小例子

       Wiki上对MVC的定义是:MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。无论是C++的MFC,JAVA的J2EE和swing,Ruby的Ruby on Rails,还是Python的django,都可以说采用了MVC模式的思想。MVC模式中解藕是重要的一环,引用一句话“那么多的设计模式,那么多的软件架构,无非就是封装和解耦、继承和关联、多态和转型的应用。这里面,着重看一下解耦。评价一个软件结构是否合理,耦合的强弱是很重要的一个评判因素,强耦合的系统在应对变化的时候总是感觉乏力,而一个弱耦合的系统则会轻松自如。”

      the django book2.0有一个解藕的小例子如下:

      

     1 # urls.py
     2 from django.conf.urls.defaults import *
     3 from mysite import views
     4 urlpatterns = patterns('',
     5 (r'^(foo)/$', views.foobar_view),
     6 (r'^(bar)/$', views.foobar_view),
     7 )
     8 # views.py
     9 from django.shortcuts import render_to_response
    10 from mysite.models import MyModel
    11 def foobar_view(request, url):
    12 m_list = MyModel.objects.filter(is_new=True)
    13 if url == 'foo':
    14 template_name = 'template1.html'
    15 elif url == 'bar':
    16 template_name = 'template2.html'
    17 return render_to_response(template_name, {'m_list': m_list})

      urls.py对url进行配置,但是url的部分工作却在views.py中完成。如果你打算把 /foo/ 改成 /fooey/的话,那么你就得记住要去改变视图里面的代码。

    解藕的方法是对url的处理只在urls.py中完成,只要传递给views.py一个参数就可以了。

      

     1 # urls.py
     2 from django.conf.urls.defaults import *
     3 from mysite import views
     4 urlpatterns = patterns('',
     5 (r'^foo/$', views.foobar_view, {'template_name': 'template1.html'}),
     6 (r'^bar/$', views.foobar_view, {'template_name': 'template2.html'}),
     7 )
     8 # views.py
     9 from django.shortcuts import render_to_response
    10 from mysite.models import MyModel
    11 def foobar_view(request, template_name):
    12 m_list = MyModel.objects.filter(is_new=True)
    13 return render_to_response(template_name, {'m_list': m_list})
  • 相关阅读:
    GNU软件FTP下载汇总
    设置git的代理服务器
    今天发现一个Convert.ToDateTime的异常,算不算微软的bug呢?
    无线电空间传输损耗衰减计算(转帖)
    使用ArcGis10.2通过Dem提取山顶点(原创)
    VC++编译zlib
    VC++编译libpng
    vc++编译libtiff4.0.4
    VC++编译GSL
    libCEF总结02字符串
  • 原文地址:https://www.cnblogs.com/lkprof/p/3083601.html
Copyright © 2011-2022 走看看