当前位置: 首页 > news >正文

MVC与设计模式理解-lnmp学习之路

一、MVC

前言:

        MVC是一种应用架构模式,也可以说是一种业务架构或是一种应用设计思想,用于组织业务逻辑并分离代码的。
        MVC组成结构是Model-View-Controller,Model是管控数据层,View是管控视图层,Controller是管控业务逻辑层。

举例:

        例如后台管理系统:用户通过域名访问,控制层(Controller)收到信号后会去查找用户登录标识,如果用户没有登录,会告诉视图层(View),展示登录页面,让用户登录。

        例如还是后台管理系统:用户登录后台管理系统,添加后台管理员账号及密码,后台管理员能看到添加的管理员账号。

二、设计模式

        前言:

                设计模式是一套指导原则,用来指导开发者组织代码结构的,以便于更好的应对业务变化及提高代码的可维护性。
                设计模式通常具备以下特点:
                1、重用性:在特定的场景下,设计模式可以被重复使用,对相同类型不同问题的环境,其解决方案都有效‌
                2、灵活性:可以根据具体的需求和条件进行调整和变化,以满足特定的开发需求‌
                3、维护性:提供了一种标准化的解决方案
                4、扩展性:支持软件的未来发展和变化,使得软件更容易适应新的需求和变化‌

        举例:

                例如我们常见的线下活动:签到、答题、抽奖等,利用工厂模式
abstract class TemplateHandle
{/*** 获取模板信息* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:44* @ param $id* @ return mixed*/protected abstract function getTemplate($id);/*** 保存模板* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:43* @ param $param* @ return mixed*/protected abstract function saveTemplate($param);
}
class TemplateFactory
{protected static $instance = null;//缓存实例protected $channelType = 0;//通道类型//初始化参数public function __construct($type){$this->channelType = $type;}//选择通道public function templateHandle(){switch ((int)$this->channelType){case 1:// 答题模板self::$instance = new Answer();break;case 2:self::$instance = new Pic();break;case 3:self::$instance = new Other();break;case 4:break;default:self::$instance = null;throw new BaseError("未设置任何通道",50000,200);break;}return self::$instance;}
}
class Pic extends TemplateHandle
{/*** 初始化* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:44* Pic constructor.*/public function __construct(){}/*** 获取模板信息* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:44* @ param $id* @ return mixed*/public function getTemplate($id){// TODO: Implement getTemplate() method.}/*** 保存模板* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:43* @ param $param* @ return mixed*/public function saveTemplate($param){// TODO: Implement saveTemplate() method.}
}
class Answer extends TemplateHandle
{/*** 初始化* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:44* Pic constructor.*/public function __construct(){}/*** 获取模板信息* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:44* @ param $id* @ return mixed*/public function getTemplate($id){// TODO: Implement getTemplate() method.}/*** 保存模板* User: 龙哥·三年风水* Date: 2024/8/27* Time: 9:43* @ param $param* @ return mixed*/public function saveTemplate($param){// TODO: Implement saveTemplate() method.}
}

http://www.mrgr.cn/news/15423.html

相关文章:

  • 如何使用python抓包,附代码
  • 虚拟机Linux(Centos7)系统静态IP设置
  • java 使用intern()性能对比
  • 贪心算法---划分字母区间
  • mysql集群从零开始搭建
  • 怎么解决 hash 碰撞,用 C++ 实现 hashMap?
  • Docker原理及实例
  • 计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战
  • linux:网络编程之TCP
  • day02 1.c++对c的扩充
  • 【ShuQiHere】微调与训练恢复:理解 `load_weights` 和 `save_model` 的实用方法
  • 【Linux入门】shell基础篇——数组
  • glance学习小结
  • 在Ubuntu24.04上安装多主多从的高可用Kubernetes节点
  • 掌握Nginx负载均衡中的请求缓存处理:策略与实现
  • 轻松掌握 ViewPager2:打造流畅的页面切换体验
  • 基于PHP+MySQL组合开发的微信投票小程序 带完整的安装代码包以及搭建教程
  • 【推荐】Linux 推荐软件
  • 【iOS】iOS中简单的网络请求
  • LIN诊断(4)——Tp层函数LINtp.dll应用