• 解藕的小例子


       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})
  • 相关阅读:
    java获取包下被指定注解的类
    Only fullscreen activities can request orientation 解决方法
    android 编译时注解
    android AOP编程
    webView渲染富文本
    看美剧神器
    神奇图书馆主题曲 歌词
    工体东路没有人
    微信小程序如何快速开通流量主
    微信小程序入门教程
  • 原文地址:https://www.cnblogs.com/lkprof/p/3083601.html
Copyright © 2020-2023  润新知