线性代数(一)——向量基础

news2024/11/17 20:39:47

向量基础

  • 1、向量和线性组合
  • 2、向量的模和点乘
  • 3、矩阵
  • 4、参考

线性代数的核心是向量的加和乘两种运算的组合,本篇博客为线性代数的一个引子,主要从向量、线性组合和矩阵逐步引出线性代数的相关知识。

1、向量和线性组合

首先介绍的是向量相关,向量是基础。
已知列向量: υ = [ v 1 v 2 ] \boldsymbol{\upsilon}=\left[\begin{matrix} v_1 \\ v_2\end{matrix} \right] υ=[v1v2] ω = [ w 1 w 2 ] \boldsymbol{\omega}=\left[\begin{matrix} w_1 \\ w_2\end{matrix} \right] ω=[w1w2]

向量加法: υ + ω = [ v 1 + w 1 v 2 + w 2 ] \boldsymbol{\upsilon}+\boldsymbol{\omega}=\left[\begin{matrix} v_1+w_1 \\ v_2+w_2\end{matrix} \right] υ+ω=[v1+w1v2+w2]

纯量乘法: c υ = [ c v 1 c v 2 ] c\boldsymbol{\upsilon}=\left[\begin{matrix} cv_1 \\ cv_2\end{matrix} \right] cυ=[cv1cv2] c c c是标量;

线性组合:我们将 υ \boldsymbol{\upsilon} υ ω \boldsymbol{\omega} ω的加法运算和标量乘法运算结合起来,得到的结果称为 υ \boldsymbol{\upsilon} υ ω \boldsymbol{\omega} ω的线性组合,即 c υ + d ω c\boldsymbol{\upsilon}+d\boldsymbol{\omega} cυ+dω
两个向量的线性组合就是线性代数的最简单的形式。

下图展示了向量加法的结果:
在这里插入图片描述
Tip:列向量 υ = [ a b c ] \boldsymbol{\upsilon}=\left[\begin{matrix} a \\ b \\ c\end{matrix} \right] υ=abc也可以写为 υ = ( a , b , c ) \boldsymbol{\upsilon}=( a , b , c ) υ=(a,b,c),这两种形式都是表示列向量,后一种可以节约书写空间。另外,行向量表示为 υ = [ a , b , c ] \boldsymbol{\upsilon}=[ a , b , c ] υ=[a,b,c],平躺着并用方括号表示。

2、向量的模和点乘

点乘(内积):点乘为两个向量对应位置上元素乘积的和。
向量 υ = ( v 1 , v 2 , v 3 , . . . , v n ) \boldsymbol{\upsilon}=( v_1 , v_2 , v_3,...,v_n ) υ=(v1,v2,v3,...,vn)和向量 ω = ( w 1 , w 2 , w 3 , . . . , w n ) \boldsymbol{\omega}=( w_1 , w_2 , w_3,...,w_n ) ω=(w1,w2,w3,...,wn)的点乘表示为:
υ ⋅ ω = v 1 w 1 + v 2 w 2 + . . . + v n w n \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}=v_1w_1+v_2w_2+...+v_nw_n υω=v1w1+v2w2+...+vnwn
向量 υ = ( v 1 , v 2 , v 3 , . . . , v n ) \boldsymbol{\upsilon}=( v_1 , v_2 , v_3,...,v_n ) υ=(v1,v2,v3,...,vn)和其自身的点乘为:
υ ⋅ υ = v 1 2 + v 2 2 + . . . + v n 2 = ( v 1 − 0 ) 2 + ( v 2 − 0 ) 2 + . . . + ( v n − 0 ) 2 \boldsymbol{\upsilon} \cdot \boldsymbol{\upsilon}=v^2_1+v^2_2+...+v^2_n=(v_1-0)^2+(v_2-0)^2+...+(v_n-0)^2 υυ=v12+v22+...+vn2=(v10)2+(v20)2+...+(vn0)2
向量的长度(模)
则在 n n n维坐标系中, υ ⋅ υ \boldsymbol{\upsilon} \cdot \boldsymbol{\upsilon} υυ表示点 ( v 1 , v 2 , v 3 , . . . , v n ) ( v_1 , v_2 , v_3,...,v_n) (v1,v2,v3,...,vn)到坐标原点的距离的平方,即向量 υ \boldsymbol{\upsilon} υ的长度的平方,所以向量 υ \boldsymbol{\upsilon} υ的长度为:
l e n g t h = ∥ υ ∥ = υ ⋅ υ = ( v 1 2 + v 2 2 + . . . + v n 2 ) 1 / 2 \mathbf{length}= \left \|\boldsymbol{\upsilon}\right\|=\sqrt{\boldsymbol{\upsilon} \cdot \boldsymbol{\upsilon}}=(v^2_1+v^2_2+...+v^2_n)^{1/2} length=υ=υυ =(v12+v22+...+vn2)1/2
如下图所示:
二维向量和三维向量的长度
单位向量
单位向量是长度等于1的向量,则向量 υ \boldsymbol{\upsilon} υ的单位向量 u \boldsymbol{u} u为任何非零向量除以该向量的长度,即:
u = υ ∥ υ ∥ \boldsymbol{u}=\frac{\boldsymbol{\upsilon}}{ \left \|\boldsymbol{\upsilon}\right\|} u=υυ
下图为单位向量的示意图:
单位向量
对于非零向量,当向量 υ \boldsymbol{\upsilon} υ垂直向量 ω \boldsymbol{\omega} ω时,它们的点积为零,即:
υ ⋅ ω = 0 \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}=0 υω=0
可结合勾股定理进行证明。
向量夹角
设向量 υ \boldsymbol{\upsilon} υ和向量 ω \boldsymbol{\omega} ω的夹角为 θ \theta θ,当 υ ⋅ ω ! = 0 \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}!=0 υω!=0时,会有:
{ θ < 9 0 ∘ , υ ⋅ ω > 0 θ > 9 0 ∘ , υ ⋅ ω < 0 \left\{\begin{array}{cc} \theta<90^{\circ}, & \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}>0\\ \theta>90^{\circ}, & \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}<0 \end{array}\right. {θ<90,θ>90,υω>0υω<0
除此之外,两个单位向量的点乘也表示两个向量夹角 θ \theta θ c o s i n e cosine cosine余弦值:
u ⋅ U = c o s θ , u ⋅ U ≤ 1 \boldsymbol{u} \cdot \boldsymbol{U}=cos{\theta},\boldsymbol{u} \cdot \boldsymbol{U}\leq1 uU=cosθuU1
单位向量的点乘等于两向量夹角的余弦值
那么对于非单位向量的向量 υ \boldsymbol{\upsilon} υ和向量 ω \boldsymbol{\omega} ω的夹角的余弦值应该怎么表示?
综上所述,应该为这两个向量对应的单位向量的点乘,即:
c o s θ = ( υ ∥ υ ∥ ) ⋅ ( ω ∥ ω ∥ ) = υ ⋅ ω ∥ υ ∥ ∥ ω ∥ ≤ 1 cos\theta = (\frac{\boldsymbol{\upsilon}}{\left \|\boldsymbol{\upsilon}\right\|}) \cdot (\frac{\boldsymbol{\omega}}{\left \|\boldsymbol{\omega}\right\|})=\frac{\boldsymbol{\upsilon} \cdot \boldsymbol{\omega}}{\left \|\boldsymbol{\upsilon}\right\|\left \|\boldsymbol{\omega}\right\|}\leq1 cosθ=(υυ)(ωω)=υωυω1

由此可引出两个著名的不等式:
柯西-施瓦兹-布尼亚科夫斯基不等式 ∣ υ ⋅ ω ∣ ≤ ∥ υ ∥ ∥ ω ∥ | \boldsymbol{\upsilon} \cdot \boldsymbol{\omega}|\leq{\left \|\boldsymbol{\upsilon}\right\|\left \|\boldsymbol{\omega}\right\|} υωυω
三角不等式: ∥ υ + ω ∥ ≤ ∥ υ ∥ + ∥ ω ∥ {\left \|\boldsymbol{\upsilon}+\boldsymbol{\omega}\right\|}\leq{\left \|\boldsymbol{\upsilon}\right\|+\left \|\boldsymbol{\omega}\right\|} υ+ωυ+ω

3、矩阵

接下来,我们从向量过度到矩阵,用矩阵表示线性组合。前面介绍了向量之间的运算,那么当一个矩阵乘以一个向量应如何去理解呢?
首先给定三个向量:
u = [ 1 − 1 0 ] , υ = [ 0 1 − 1 ] , ω = [ 0 0 1 ] . \boldsymbol{u}=\left[\begin{matrix} 1 \\ -1 \\ 0\end{matrix} \right],\boldsymbol{\upsilon}=\left[\begin{matrix} 0 \\ 1 \\ -1\end{matrix} \right],\boldsymbol{\omega}=\left[\begin{matrix} 0 \\ 0 \\ 1\end{matrix} \right]. u=110,υ=011,ω=001.
则这三个三维向量的线性组合为: x 1 u + x 2 υ + x 3 ω x_1\boldsymbol{u}+x_2\boldsymbol{\upsilon}+x_3\boldsymbol{\omega} x1u+x2υ+x3ω,即:
x 1 [ 1 − 1 0 ] + x 2 [ 0 1 − 1 ] + x 3 [ 0 0 1 ] = [ x 1 x 2 − x 1 x 3 − x 2 ] x_1\left[\begin{matrix} 1 \\ -1 \\ 0\end{matrix} \right]+x_2\left[\begin{matrix} 0 \\ 1 \\ -1\end{matrix} \right]+x_3\left[\begin{matrix} 0 \\ 0 \\ 1\end{matrix} \right]=\left[\begin{matrix} x_1 \\ x_2-x_1 \\ x_3-x_2\end{matrix} \right] x1110+x2011+x3001=x1x2x1x3x2
那么用矩阵重写上面的线性组合为:
A x = [ 1 0 0 − 1 1 0 0 − 1 1 ] [ x 1 x 2 x 3 ] = [ x 1 x 2 − x 1 x 3 − x 2 ] = [ b 1 b 2 b 3 ] = b A\boldsymbol{x}=\left[\begin{matrix} 1 & 0 & 0\\ -1 & 1 & 0\\ 0 & -1 & 1\end{matrix} \right]\left[\begin{matrix} x_1 \\ x_2 \\ x_3\end{matrix} \right]=\left[\begin{matrix} x_1 \\ x_2-x_1 \\ x_3-x_2\end{matrix} \right]=\left[\begin{matrix} b_1 \\ b_2 \\ b_3\end{matrix} \right]=\boldsymbol{b} Ax=110011001x1x2x3=x1x2x1x3x2=b1b2b3=b
从以上两式可以看出,矩阵A乘以向量 x \boldsymbol{x} x等同于矩阵 A A A的三个列向量的线性组合 x 1 u + x 2 υ + x 3 ω x_1\boldsymbol{u}+x_2\boldsymbol{\upsilon}+x_3\boldsymbol{\omega} x1u+x2υ+x3ω,即 A x A\boldsymbol{x} Ax的结果就是矩阵A的各列的线性组合

此外,我们也可以使用行的点乘来计算 A x A\boldsymbol{x} Ax
A x = [ 1 0 0 − 1 1 0 0 − 1 1 ] [ x 1 x 2 x 3 ] = [ ( 1 , 0 , 0 ) ⋅ ( x 1 , x 2 , x 3 ) ( − 1 , 1 , 0 ) ⋅ ( x 1 , x 2 , x 3 ) ( 0 , − 1 , 1 ) ⋅ ( x 1 , x 2 , x 3 ) ] = [ x 1 x 2 − x 1 x 3 − x 2 ] = [ b 1 b 2 b 3 ] = b A\boldsymbol{x}=\left[\begin{matrix} 1 & 0 & 0\\ -1 & 1 & 0\\ 0 & -1 & 1\end{matrix} \right]\left[\begin{matrix} x_1 \\ x_2 \\ x_3\end{matrix} \right]=\left[\begin{matrix} (1,0,0) \cdot (x_1,x_2,x_3) \\ (-1,1,0) \cdot (x_1,x_2,x_3) \\ (0,-1,1) \cdot (x_1,x_2,x_3)\end{matrix} \right]=\left[\begin{matrix} x_1 \\ x_2-x_1 \\ x_3-x_2\end{matrix} \right]=\left[\begin{matrix} b_1 \\ b_2 \\ b_3\end{matrix} \right]=\boldsymbol{b} Ax=110011001x1x2x3=(1,0,0)(x1,x2,x3)(1,1,0)(x1,x2,x3)(0,1,1)(x1,x2,x3)=x1x2x1x3x2=b1b2b3=b
线性等式
前面我们是已知 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3,来计算等号右侧的 b \boldsymbol{b} b,那么,如果已知等号右侧的 b \boldsymbol{b} b,如何来求 x \boldsymbol{x} x呢?
旧问题: 计算线性组合 x 1 u + x 2 υ + x 3 ω x_1\boldsymbol{u}+x_2\boldsymbol{\upsilon}+x_3\boldsymbol{\omega} x1u+x2υ+x3ω为了得出 b \boldsymbol{b} b
新问题: u , υ , ω \boldsymbol{u},\boldsymbol{\upsilon},\boldsymbol{\omega} u,υ,ω的哪种组合可以生成指定的 b \boldsymbol{b} b

很明显,这是一个互逆的问题。将等式 A x = b A\boldsymbol{x}=\boldsymbol{b} Ax=b改写成我们熟悉的方程式组为:
{ x 1 = b 1 − x 1 + x 2 = b 2 − x 2 + x 3 = b 3 \begin{cases} x_1&&&&&=&b_1&\\ -x_1&+&x_2&&&=&b_2& \\ &-&x_2&+&x_3&=&b_3 \end{cases} x1x1+x2x2+x3===b1b2b3
可轻易对该方程组求解:
{ x 1 = b 1 x 2 = b 1 + b 2 x 3 = b 1 + b 2 + b 3 \begin{cases} x_1=&b_1&\\ x_2=&b_1&+&b_2& \\ x_3=&b_1&+&b_2&+&b_3& \end{cases} x1=x2=x3=b1b1b1++b2b2+b3
写成矩阵形式为: x = A − 1 b \boldsymbol{x}=A^{-1}\boldsymbol{b} x=A1b,我们将 A − 1 A^{-1} A1称作 A A A的逆矩阵,此时的 A A A为可逆矩阵。

多个向量的独立和非独立性
多个向量之间的独立性和相关性
如上图所示,左右两个坐标系里向量 u 、 υ \boldsymbol{u}、\boldsymbol{\upsilon} uυ是一样的,这两个向量的线性组合构成一个同样的二维平面,关键问题是第三个向量是否在这个平面里:
独立性: ω \boldsymbol{\omega} ω不在 u 、 υ \boldsymbol{u}、\boldsymbol{\upsilon} uυ构成的平面中,即:
只有当 x 1 = 0 , x 2 = 0 、 x 3 = 0 x_1=0,x_2=0、x_3=0 x1=0,x2=0x3=0时,才满足等式 x 1 u + x 2 υ + x 3 ω = 0 x_1\boldsymbol{u}+x_2\boldsymbol{\upsilon}+x_3\boldsymbol{\omega}=\boldsymbol{0} x1u+x2υ+x3ω=0
如果矩阵 A A A的列是独立的,则 A x = 0 A\boldsymbol{x}=\boldsymbol{0} Ax=0只有一个解, A A A被称作可逆矩阵(非奇异矩阵)。
非独立性: ω ∗ \boldsymbol{\omega^*} ω u 、 υ \boldsymbol{u}、\boldsymbol{\upsilon} uυ构成的平面中,即:
存在多组 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3,满足 x 1 u + x 2 υ + x 3 ω ∗ = 0 x_1\boldsymbol{u}+x_2\boldsymbol{\upsilon}+x_3\boldsymbol{\omega^*}=\boldsymbol{0} x1u+x2υ+x3ω=0
如果矩阵 C C C的列是非独立的,则 C x = 0 C\boldsymbol{x}=\boldsymbol{0} Cx=0存在多个解,矩阵 C C C被称作奇异矩阵。

4、参考

[1] Introduction Linear Algebra,Fifth Edition,Giibert Strang.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509532.html

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

相关文章

使用nexus3搭建npm私有仓库

一、下载解压安装包 下载地址&#xff1a;nexus-3.66.0-02-win.zip 二、安装并运行私服 在cmd中进入到文件夹中的bin目录下运行一下命令 nexus.exe /run等几分钟启动后&#xff0c;浏览器访问&#xff1a;默认端口8081 http://127.0.0.1:8081/ #修改端口在etc文件下 nexus-…

Oracle集群ASM磁盘扩容

先通过lsblk来查看集群两端磁盘是否扩容成功 lsblk -a查看自己两边磁盘UUID是否相同(for i in 后面为磁盘sd后字母名) for i in x y z aa ab ac ad ae do echo "KERNEL\"sd*\", SUBSYSTEM\"block\", PROGRAM\"/lib/udev/scsi_id --whitelist…

javaEE4(预习第3章,做课后习题1:简答)

1、简答 &#xff08;1&#xff09;Jsp页面翻译成的Servlet类的源文件在哪里可以找到&#xff1f;servlet实例是每次请求页面都会创建一个&#xff0c;还是只有一个&#xff08;单例&#xff09;&#xff1f; tomcat工作目录下的work目录下 只有一个 页面中定义变量加和不加…

扫雷小游戏制作教程:用HTML5和JavaScript打造经典游戏

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

smart-doc 社区 Committer 晋升公告

我们非常荣幸地宣布&#xff0c;经过 PMC 委员会的提名和讨论&#xff0c;社区成员李星志&#xff08;GitHub ID: netdied&#xff09;、陈琪&#xff08;GitHub ID: chenqi146&#xff09;和李兵&#xff08;GitHub ID: abing22333&#xff09;正式晋升为同程旅行 smart-doc 开…

Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)

文章目录 1、什么是Jenkins的流水线?2、流水线语法2.1、声明式流水线2.2、脚本化流水线 3、流水线示例3.1、使用声明式流水线的语法编写的 Jenkinsfile 文件3.2、Pipeline 各种语言示例3.2.1 Java&#xff1a;3.2.2 Node.js / JavaScript3.2.3 Python 4、一套完整的Devops Jen…

Adobe Photoshop 2024 v25.5.1 for mac 强大的图形编辑工具 兼容 M1/M2/M3

Mac毒搜集到的Adobe Photoshop 2024 v25.5.1 是一款强大的图形编辑和设计工具! v25.5.1版本AI生成式无法使用 应用介绍 Adobe Photoshop 2024是一款强大的图像处理软件&#xff0c;由Adobe公司开发。它可以用于编辑和处理照片、图形和其他类型的图像&#xff0c;包括设计、绘画…

YOLOv5独家改进:backbone改进 | 最新大卷积核CNN架构UniRepLKNet,ImageNet 88% | CVPR2024

💡💡💡本文独家改进:大核卷积一统多种模态!RepLK正统续作UniRepLKNet,代替YOLOv5 Backbone 改进结构图如下: 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合paper !!! 💡…

Linux查看磁盘命令df-h详解

df -h 是一个常用的 Linux 命令&#xff0c;用于查看文件系统的磁盘使用情况并以易于阅读的方式显示。以下是 df -h 命令的详细解释&#xff1a; -h&#xff1a;以人类可读的格式显示磁盘空间大小。例如&#xff0c;使用 GB、MB、KB 等单位代替字节。 执行 df -h 命令后&…

基于ElasticSearch存储海量AIS数据:时空立方体索引篇

文章目录 引言I 时间维切分II 空间范围切分引言 索引结构制约着查询请求的类型和处理方式,索引整体架构制约着查询请求的处理效率。随着时间推移,AIS数据在空间分布上具备局部聚集性,如 果简单地将所有AIS数据插入一个索引结构,随着数据量增长,索引的更新效率、查询效率及…

Codeforces Round 933 (Div. 3)(A~E)

还在HACK&#xff0c;代码仅供参考。 A. Rudolf and the Ticket 关键句&#xff0c;直接枚举所有可能 #include <bits/stdc.h> //#define int long long #define per(i,j,k) for(int (i)(j);(i)<(k);(i)) #define rep(i,j,k) for(int (i)(j);(i)>(k);--(i)) #defi…

使用 IDEA 将本地jar上传到本地maven仓库

IDEA中的操作步骤 创建一个 Maven 运行配置 在开发工具的导航栏中&#xff0c;点击选择配置&#xff1a; 在配置界面点击左上角的加号&#xff0c;随后选择增加一个maven运行配置&#xff1a; 编辑 Maven 配置 上图中的含义&#xff1a; Name 对应的是本配置的名字、用处或功…

Tomcat Web 开发项目构建教程

1下载Tomcat安装包&#xff0c;下载链接&#xff1a;Apache Tomcat - Welcome!&#xff0c;我电脑环境为JDK8,所以下载Tomcat9.0 2、下载完压缩包后&#xff0c;解压到指定位置 3.在intelij中新建一个项目 4.选中创建的项目&#xff0c;双击shift&#xff0c;输入add frame...然…

【Android】数据安全(一) —— Sqlite加密

目录 SQLCipherSQLiteCrypt其它 SQLCipher SQLCipher 是 SQLite 数据库的的开源扩展&#xff0c;使用了 256 位 AES 加密&#xff0c;支持跨平台、零配置、数据100%加密、加密开销低至 5 -15%、占用空间小、性能出色等优点&#xff0c;因此非常适合保护嵌入式应用程序数据库&a…

阿里云ECS磁盘扩容操作手册

云原生专栏大纲 文章目录 ESC磁盘扩容步骤前提条件云盘备份云盘扩容扩容分区和文件系统前提条件操作视频操作步骤准备工作&#xff1a;获取目标云盘信息步骤1&#xff1a;扩容分区步骤2&#xff1a;扩容文件系统 ESC磁盘扩容步骤 扩容已有云盘的操作步骤和注意事项_云服务器 …

excel如何查找两张表格共有的名单信息

我们需要在表格一中查找表格二中有名单的数据行 或者我想在表格二中查找表格一中有数据的数据行 这时候就可以使用上我们的公式啦 IF(COUNTIF(Sheet2!$B$2:$B$11326,B5),"YES") Sheet2&#xff1a;表示需要查询内容所在的表格 $B$2&#xff1a;表示从Sheet2表中的B2…

C语言标准库函数qsort( )——数据排序

大家好&#xff01;我是保护小周ღ&#xff0c;本期为大家带来的是深度解剖C语言标准库函数 qsort()&#xff0c;qsort()函数他可以对任意类型的数据排序&#xff0c;博主会详细解释函数使用方法&#xff0c;以及使用快速排序的左右指针法模拟实现函数功能&#xff0c;这样的排…

VSCode提交代码

VSCode提交代码方式&#xff1a; 先在电脑本地文件夹中打开git的bash窗口使用git clone https://github.com/xxxx/克隆仓库地址到本地&#xff0c;并生成一个项目的文件夹打开VSCode&#xff0c;点击文件按钮&#xff0c;打开加载项目的文件夹对于VSCode设置Git路径&#xff…

Linux多线程编程条件变量的概述和使用方法

目录 概述 1 引入条件变量概念 2 条件变量的应用 2.1 创建与销毁 2.1.1 创建条件变量 2.1.2 销毁条件变量 2.2 等待与通知 2.2.1 等待 2.2.2 通知 3 使用条件变量的范例 3.1 编写代码 3.2 测试 4 参考文献 概述 本文介绍了linux多线程编程中条件变量的相关知识&a…

09-设计模式 面试题

你之前项目中用过设计模式吗? 工厂方法模式分类 简单工厂模式工厂方法模式抽象工厂模式工厂模式 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore)…