zoukankan      html  css  js  c++  java
  • MVC设计模式(Python)

    工作原理

    MVC模式的工作机制为:

    1. 模型提供数据和业务逻辑(如何存储和查询信息),
    2. 视图负责数据的展示(如何呈现),
    3. 而控制器是两者之间的粘合剂,根据用户要求的呈现方式来协调模型和视图。

    有趣的是,视图和控制器依赖于模型,而不是反过来。这主要是因为用户所关心的是数据。模型是可以独立工作的,这是MVC模式的关键所在。

    MVC设计模式使用以下术语——模型、视图、控制器和客户端。

    • 模型:声明一个存储和操作数据的类。
    • 视图:声明一个类来构建用户界面和显示数据。
    • 控制器:声明一个连接模型和视图的类。
    • 客户端:声明一个类,根据某些操作来获得某些结果。

    简而言之,MVC模式的主要意图如下。

    • 将数据和数据的展示隔离开来。
    • 使类的维护和实现更加简单。
    • 灵活地改变数据的存储和显示方式。

    两者都是独立的,因此可以灵活修改。

    应用

    我们想要开发一个应用程序,告诉用户云公司所提供的营销服务,包括电子邮件、短信和语音设施。

    我们首先要开发model类(模型),定义产品提供的服务,即电子邮件、短信和语音。这里的每种服务都有特定的费率,例如每1000封电子邮件将向客户收取2美元,而每1000条短信,费用为10美元,同时每1000条语音留言的费用为15美元。因此,模型提供与产品服务和价格相关的数据。

    然后,我们来定义view类(视图),它提供了将信息反馈给客户端的方法。这些方法是list_services()list_ pricing(),从方法名称不难看出,一个是用于打印产品提供的服务,另一个是用来列出服务的定价。

    接下来,我们开始定义Controller类,这个类定义了两个方法,即get_services()和get_pricing()。这两个方法都是用来查询模型并获取数据的,然后将数据馈送到视图,从而展示给用户。

    class Model:
        services = {
            'email':{'number': 1000, 'price': 2}, 
            'sms':{'number':1000, 'price':10}, 
            'voice':{'number':1000, 'price': 20}, 
            'short-video':{'number':1000, 'price': 60}
        }
    
    class View:
        def list_services(self, services):
            for svc in services:
                print(svc, ' ')
    
        
        def list_pricing(self, services):
            for svc in services:
                print("For {} {} message,  you may pay {}.".format(Model.services[svc]['number'], 
                                                             svc, 
                                                             Model.services[svc]['price']))
    
    class Controller:
        def __init__(self):
            self.view = View()
            self.model = Model()
        
        def get_services(self):
            services = self.model.services.keys()
            return self.view.list_services(services)
    
        def get_pricing(self):
            services = self.model.services.keys()
            return self.view.list_pricing(services)
    
    class Client:
        controller = Controller()
        print("Serices Proviced")
        controller.get_services()
        print("Prices")
        controller.get_pricing()
    
    client = Client()        
    
    Serices Proviced
    email  
    sms  
    voice  
    short-video  
    Prices
    For 1000 email message,  you may pay 2.
    For 1000 sms message,  you may pay 10.
    For 1000 voice message,  you may pay 20.
    For 1000 short-video message,  you may pay 60.
  • 相关阅读:
    eXtremeDB 简单开发
    MFC PostMessage SendMessage
    char string 区别
    div 水平垂直居中
    npm—小记
    ECharts简单运行例子
    HTML在表格中添加echarts图表
    Sublime Text 3配置JavaScript运行环境
    bjdctf_2020_YDSneedGrirlfriend
    wdb_2018_2nd_easyfmt
  • 原文地址:https://www.cnblogs.com/Tcorner/p/13491657.html
Copyright © 2011-2022 走看看