python-设计模式-MVC模式

概述

mvc模式的思想就是分层,将每个关注点的问题放在不同的层上进行解决。该模式符合SOC(关注点分离)原则,一般会分为数据访问层,业务逻辑层,表示层。

  • 数据访问层:处理和数据的交互,如:建立连接,是否使用连接池,获取数据,插入数据等等
  • 表示层:只处理数据的展示,比如展示为饼图,使用不同的色调等等
  • 业务逻辑层:这一层负责将表示层和数据访问层粘合,将表示层的请求,按照业务规则处理后,向数据访问层插入数据或者获取数据等等

我们还是使用椰奶的例子说事,比如柜台存放椰奶这件事:

  • 柜台该怎么摆放,这就是表示层的事
  • 到底要摆放那些椰奶,顾客选择的椰奶多少钱这是业务逻辑层的事
  • 选择的椰奶到底在不在库存,这就是数据访问层的事

实践一下

# @Time : 2022/7/17 15:18 
# @File : MvcModel.py 
# @Software: PyCharm


inventory = [
    f"盒装,代言人徐冬冬,100ml, 椰奶",
    f"盒装,代言人张一山,100ml, 椰奶",
    f"罐装,代言人古力娜扎,200ml, 椰奶",
    f"瓶装,代言人马尔扎哈,300ml, 椰奶",
]


class CoconutMilkModel:

    def get_inventory_nums(self):
        print("获取库存量")
        return len(inventory)

    def get_one(self, n):

        if not isinstance(n, int):
            n = int(n)

        if n > len(inventory) -1:
            raise Exception(f"不存在的库存 {n}")

        return inventory[n]

    def get_all(self):
        return inventory


class CoconutMilkView:

    def show(self, all_cm):
        print(f"我要将所有的椰奶,横着摆放, {all_cm}")

    def error(self, msg):
        print(f"ERROR, {msg}")

    def select_one(self):
        return input("请选一个椰奶, 老弟 ==> ")


class CoconutMilkController:

    def __init__(self):
        self.view = CoconutMilkView()
        self.model = CoconutMilkModel()

    def run(self):
        self.view.show(self.model.get_all())
        while True:
            try:
                select_num = self.view.select_one()
                print(
                    self.model.get_one(select_num)
                      )
            except Exception as e:
                self.view.error(e.__str__())


if __name__ == "__main__":
    cm_controller = CoconutMilkController()
    cm_controller.run()

运行结果

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值