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

news2024/9/30 14:52:15

一、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.coloradmin.cn/o/2087536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity-UGUI组件拓展】| ContentSizeFitter 组件拓展,支持设置最大宽高值

🎬【Unity-UGUI组件拓展】| ContentSizeFitter 组件拓展,支持设置最大宽高值一、组件介绍二、组件拓展方法三、完整代码💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲…

图新地球桌面端-给地块贴纹理都是正北方向如何调整

0序 有部分做农保、农业管理的客户,需要结合GIS做一些方案效果,有时候会直接把面对象贴上作物类型的纹理,看上去会比纯色块更好看一些。而又不需要去做复杂的人工建模。 本文的重点是对导入的纹理进行角度调整,让纹理和地块的方向…

UE5开发——射击游戏

1. 枪支拾取动画 创建Text Block 编译保存 在h文件写入 &#xff0c;属性 private:UPROPETY(VisibleAnywhere, Category "Weapon Properties")class UWidgetComponent* PickupWidget; 先写这个&#xff1a; CreateDefaultSubobject<UWidgetComponent>(TEXT(…

JavaWeb——介绍(什么是Web、Web网站的开发模式)、初始Web前端(Web标准、学习内容)

目录 介绍 什么是Web Web网站的开发模式 初识Web前端 Web标准 学习内容 介绍 JavaWeb学习路线 &#xff08;仅用作参考&#xff09; 什么是Web Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff08;www World Wide Web)&#xff0c;能够通过浏览器访问的…

数据结构之内核链表,栈,队列

今天主要学习了内核链表&#xff0c;顺序栈&#xff0c;链式栈&#xff0c;顺序队列&#xff0c;链式队列的相关内容。 一.内核链表 内核链表和之前的单向&#xff0c;双向链表有所不同的是内核链表的结构是数据包含节点&#xff0c;特点如下&#xff1a; 1.一种链表结构能够操…

系统架构设计师——系统工程学

概述. 系统工程是一种跨学科的方法论&#xff0c;旨在通过系统方法组织管理技术来实现系统的规划、研究、设计、制造、试验和使用。它的核心在于从整体的角度出发&#xff0c;合理地开发、设计、实施和运用系统科学和技术&#xff0c;确保系统能够成功地实现其预定目的。以下是…

适用于车队管理和试验验证的数据记录仪-IPE853

IPE853是一款可扩展的数据记录仪&#xff0c;支持整车质量保证中的各项测量任务。它具有CAN/CAN FD、LIN、以太网等众多测量输入接口&#xff0c;并支持CCP/XCPonCAN、XCPonETH、J1939、OBD、WWH-OBD、KWPonCAN、UDS/ODX/PDX和CAN-send等多种协议&#xff0c;因此其可轻松访问汽…

vscode在html中的使用

目录 一、安装插件二、通过live Server 小型服务器运行项目三、其他常见设置 一、安装插件 ● Auto Rename Tag 自动修改标签对插件 ● Chinese Language Pack 汉化包 ● HTML CSS Support HTML CSS 支持 ● Intellij IDEA Keybindings IDEA快捷键支持 ● Live Server 实时加载…

解决线程中使用线程锁

问题&#xff1a;多线程操作同一个对象&#xff0c;利用锁保证数据操作的原子性 解决方案&#xff1a;使用线程锁 简要说明&#xff1a;线程锁本质上就是添加一个公共状态量&#xff0c;当线程拿到状态量后&#xff0c;则继续执行&#xff0c;否则就等待 扩展1&#xff1a;自…

【文献及模型、制图分享】大运河江苏段沿线典型传统村落空间形态特征与影响因素及其启示

文献介绍 大运河见证了中国数千年的繁荣与变迁&#xff0c;沿线传统村落是其历史文化的直接展示。对这些村落的空间形态进行研究&#xff0c;不仅能够深入了解传统村落形态特征&#xff0c;还为其保护和发展提供有力的支持。以大运河江苏段沿线的48个传统村落为研究对象&#…

C++入门基础知识40——【关于C++ 运算符——赋值运算符】

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

CSS3中的字体详解

字体 网页字体的三个来源&#xff1a; 用户机器上安装的字体&#xff0c;放心使用。保存在第三方网站上的字体&#xff0c;例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字体&#xff0c;可以用font-face规则随网页一起发送到浏览器。 字体相…

【文献及模型、制图分享】传统村多功能发展特征识别、类型划分与差异化引导——以安徽黟县44个传统村为例(多指标综合法及耦合协调模型

文献介绍 揭示多功能发展特征、划定多功能协同发展类型是传统村落传承保护与活化利用的现实需要&#xff0c;是传统村落保护发展研究的重要议题。以黟县44个中国传统村落为研究对象&#xff0c;采用多指标综合法及耦合协调模型&#xff0c;科学测度传统村落多功能发展水平及协…

【赵渝强老师】MongoDB的存储引擎

存储引擎&#xff08;Storage Engine&#xff09;是MongoDB的核心组件&#xff0c;它负责管理数据如何存储在硬盘&#xff08;Disk&#xff09;和内存&#xff08;Memory&#xff09;上。从MongoDB 3.2 版本开始&#xff0c;MongoDB支持多种类型的数据存储引擎。 视频讲解如下&…

“JavaScript里的多线程“WebWorker

"JavaScript里的多线程"WebWorker 引言 简要介绍主题&#xff1a; WebWorker 是一种在 Web 开发中用来解决 JavaScript 单线程限制的重要技术。通过 WebWorker&#xff0c;可以将一些复杂或耗时的任务放到后台线程中执行&#xff0c;从而避免阻塞主线程&#xff0c;…

Java 7.1 - 理论 算法 协议

什么是 CAP 理论&#xff1f; C&#xff1a;Consistency 一致性 A&#xff1a;Availability 可用性 P&#xff1a;Partition 分区容错性 对于理论计算机科学&#xff0c;CAP 定理指出&#xff0c;对于一个分布式系统而言&#xff0c;CAP 中的三个只能同时满足两个。 分区容…

从算法到硬件实现:《基于FPGA的数字信号处理》(可下载)

数字信号处理是现代电子系统中不可或缺的核心。FPGA是实现复杂DSP算法的理想平台。《基于FPGA的数字信号处理&#xff08;第2版&#xff09;》由资深工程师高亚军编著&#xff0c;是一本深入探讨FPGA在数字信号处理领域应用的专业书籍。 本书以Xilinx新一代28nm工艺芯片7系列FP…

设计模式 -- 组合模式(Composite Pattern)

1 问题引出 编写程序展示一个学校院系结构&#xff1a;需求是这样&#xff0c;要在一个页面中展示出学校的院系组成&#xff0c;一个学校有多个学院&#xff0c; 一个学院有多个系。如图&#xff1a; 2 基本介绍 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c…

Musetalk-Stream: 未来数字人的智能语音交互革命“

实时交互流式数字人&#xff0c;实现音视频同步对话。基本可以达到商用效果 ernerf效果musetalk效果wav2lip效果 Features ⦁ 支持多种数字人模型: ernerf、musetalk、wav2lip ⦁ 支持声音克隆 ⦁ 支持数字人说话被打断 ⦁ 支持全身视频拼接 ⦁ 支持rtmp和webr…