目录

  • 1 课程大纲
    • 1.1 教学大纲
    • 1.2 考核方式
    • 1.3 学习建议
    • 1.4 不定期更新的有用的资料
  • 2 第1周:软件设计模式概述(1)
    • 2.1 软件设计模式
    • 2.2 软件体系结构
  • 3 第1周:UML & 面向对象设计原则(2)
    • 3.1 UML类图 & UML时序图
      • 3.1.1 UMLet安装
      • 3.1.2 UMlet基本操作
      • 3.1.3 UML基础知识
      • 3.1.4 UMLet绘制类图
      • 3.1.5 UMLet绘制用例图
      • 3.1.6 UMLet绘制时序图
      • 3.1.7 UML 类图实例1
      • 3.1.8 UML 类图实例2
    • 3.2 面向对象设计原则
      • 3.2.1 面向对象设计原则综述
      • 3.2.2 单一职责原则
      • 3.2.3 开闭原则
      • 3.2.4 里氏代换原则
      • 3.2.5 接口隔离原则
      • 3.2.6 依赖倒转原则
      • 3.2.7 迪米特法则
      • 3.2.8 合成复用原则
      • 3.2.9 面向对象设计原则总结
    • 3.3 UML类图实验
    • 3.4 面向对象设计原则实验
      • 3.4.1 单一职责原则实验
      • 3.4.2 开闭原则实验
      • 3.4.3 里氏替换原则实验
      • 3.4.4 接口隔离原则实验
      • 3.4.5 依赖倒置原则实验
      • 3.4.6 迪米特法则实验
      • 3.4.7 合成复用原则实验
  • 4 创建型软件设计模式1
    • 4.1 简单工厂方法
      • 4.1.1 简单工厂讲解小视频
    • 4.2 工厂方法模式
      • 4.2.1 工厂方法模式讲解小视频
    • 4.3 抽象工厂模式
      • 4.3.1 抽象工厂模式讲解小视频
    • 4.4 工厂模式在Java源代码中的应用
    • 4.5 工厂模式实例讲解
    • 4.6 工厂模式实验1
    • 4.7 工厂模式实验2
  • 5 创建型软件设计模式2
    • 5.1 生成器模式
      • 5.1.1 生成器模式讲解小视频
    • 5.2 单例模式
      • 5.2.1 单例模式讲解小视频
    • 5.3 生成器 & 单例模式实例讲解
    • 5.4 生成器 & 单例模式实例讲解
    • 5.5 生成器 & 单例模式实验1
    • 5.6 生成器 & 单例模式实验2
    • 5.7 原型模式讲解小视频
  • 6 结构型软件设计模式1
    • 6.1 组合模式
      • 6.1.1 组合模式讲解小视频
    • 6.2 适配器模式
      • 6.2.1 适配器模式讲解小视频
    • 6.3 组合 & 适配器模式实例讲解
    • 6.4 组合 & 适配器模式在Java源代码中的应用
    • 6.5 组合 & 适配器模式实验1
    • 6.6 组合 & 适配器模式实验2
  • 7 结构型软件设计模式2
    • 7.1 外观模式
      • 7.1.1 外观模式讲解小视频
    • 7.2 桥接模式
      • 7.2.1 桥接模式讲解小视频
    • 7.3 外观 & 桥接模式实例讲解
    • 7.4 外观 & 桥接模式在Java源代码中的应用
    • 7.5 外观 & 桥接模式实验1
    • 7.6 外观 & 桥接模式实验2
  • 8 行为型软件设计模式1
    • 8.1 迭代器模式
      • 8.1.1 迭代器模式讲解小视频
    • 8.2 访问者模式
      • 8.2.1 访问者模式讲解小视频
    • 8.3 迭代器 & 访问模式实例讲解
    • 8.4 迭代器 & 访问模式在Java源代码中的应用
    • 8.5 迭代器 & 访问模式实验1
    • 8.6 迭代器 & 访问模式实验2
  • 9 行为型软件设计模式2
    • 9.1 命令模式
      • 9.1.1 命令模式讲解小视频
    • 9.2 中介者模式
      • 9.2.1 中介者模式讲解小视频
    • 9.3 命令 & 中介者模式实例讲解
    • 9.4 命令 & 中介者模式在Java源代码中的应用
    • 9.5 命令 & 中介者模式实验1
    • 9.6 命令 & 中介者模式实验2
  • 10 行为型软件设计模式3
    • 10.1 策略模式
      • 10.1.1 策略模式讲解小视频
    • 10.2 状态模式
      • 10.2.1 状态模式讲解小视频
    • 10.3 策略模式 & 状态模式实例讲解
    • 10.4 策略模式 & 状态模式在Java源代码中的应用
    • 10.5 策略模式 & 状态模式实验1
    • 10.6 策略模式 & 状态模式实验2
    • 10.7 观察者模式实验
  • 11 软件体系结构概述
    • 11.1 软件体系结构概念和意义
    • 11.2 软件质量属性
    • 11.3 软件体系结构风格
    • 11.4 软件体系结构概念
    • 11.5 Spring Boot的Visual Studio Code环境配置
    • 11.6 基于构件的软件体系结构实验
  • 12 经典软件体系结构1
    • 12.1 调用-返回风格软件体系结构
    • 12.2 数据流风格软件体系结构
    • 12.3 Spring Batch简介
    • 12.4 Spring Batch实验
    • 12.5 Spring Batch实验进阶
  • 13 经典软件体系结构2
    • 13.1 事件系统软件体系结构
    • 13.2 观察者模式
    • 13.3 Spring Event 实验
    • 13.4 Guava 事件系统实验
    • 13.5 分布式事件系统实验
  • 14 经典软件体系结构3
    • 14.1 层次软件体系结构
    • 14.2 C# .NET中的三层架构
  • 15 MVC软件体系结构
    • 15.1 MVC软件体系结构
  • 16 客户端-服务器软件体系结构
    • 16.1 C/S软件体系结构
    • 16.2 B/S软件体系结构
    • 16.3 基于网络的MVC软件体系结构
    • 16.4 基于 Servlet 的B/S软件体系结构实验
    • 16.5 Thymeleaf实验
    • 16.6 Spring MVC 创建网络应用程序示例实验
    • 16.7 Spring Boot 测试实验
    • 16.8 Spring Petclinic实验
  • 17 基于网络的软件体系结构2
    • 17.1 P2P软件体系结构
    • 17.2 网格计算软件体系结构
    • 17.3 REST软件体系结构
    • 17.4 REST软件体系结构实验
  • 18 现代软件体系结构
    • 18.1 SOA软件体系结构
    • 18.2 云计算软件体系结构
    • 18.3 微服务软件体系结构
    • 18.4 响应式软件体系结构
    • 18.5 无服务软件体系结构
    • 18.6 微服务软件体系结构实验
    • 18.7 响应式软件体系结构实验
MVC软件体系结构

MVC是模型(Model),视图(View)和控制(Controller)的缩写。MVC(Model-View-Controller)是一种软件体系结构模式,被广泛应用于构建各种类型的应用程序,包括Web应用程序、桌面应用程序和移动应用程序等。MVC的设计理念是将应用程序的各个组成部分分离,使其更易于维护和扩展。

Model(模型)表示应用程序核心功能与数据(比如数据库记录列表)。

View(视图)负责为用户显示信息(数据库记录)。一个模型可能拥有多个视图。

Controller(控制器)处理输入(写入数据库记录)。

模型的责任 

从数据库取出数据,并且赋予数据变量

负责业务逻辑实现

负责数据验证,然后将数据存入数据库

视图的责任

获取用户输入

向controller发送处理请求

接收来自Controller的反馈并将model的处理结果显示给用户

控制器的责任

接收来自客户的请求

调用model业务逻辑方法

调用View显示执行结果

对于数据更新,MVC采用改变-传播机制(change-propagation)

如果用户通过一个view的controller改变了model,所有的view必须反映出该改变。当数据发生变化的时候,model通知所有的view,告诉他们数据已经改变了;

Views可以遍历model中的数据,以便发现到底是什么改变了。然后更新显示数据。

使用观察者模式的MVC架构类图


使用MVC架构:


1)容易增加或者改变视图。


事务逻辑被封装在Model中,所以在新增加一个视图的时候,不必要改动模型,而是因为业务逻辑都是一样的,所以只需要新增加一个视图类即可。


2) 容易独立地更新每个独立的软件模块


    由于一个应用被分离为三个软件模块,因此,我们可以独立地改变其中的一个模块,而不影响其它两个模块。例如,一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。 


3)   代码易开发易维护


4)   业务逻辑更易测试 


-不适合小型,中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失;

-对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率;

-视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用;

-依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。