第一篇:交换机端口工作模式一些小结
交换机access和trunk的一些小结
从各个地方看了,杂七杂八的,随便记下吧!
以太网端口有 3种链路类型:access、trunk、hybird
Access类型端口只能属于1个VLAN 般用于连接计算机 端口;
Trunk类型端口可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,一般用于交换机之间的连接;
Hybrid类型端口可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,可以用于交换机的间连接也可以用于连接用户计算机。
Hybrid端口和Trunk端口在接收数据时处理思路方法是一样的,唯一区别的处在于发送数据时:Hybrid端口可以允许多个VLAN报文发送时不打标签,而Trunk端口只允许缺省VLAN报文发送时不打标签。
缺省VLAN:
Access端口只属于1个VLAN 所以它缺省VLAN就是它所在VLAN不用设置; Hybrid端口和 Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下 Hybrid端口和Trunk端口缺省VLAN为VLAN 1;
如果设置了端口缺省VLAN ID当端口接收到不带VLAN Tag报文后 则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag报文时,如果该报文 VLAN ID和端口缺省VLAN ID相同,则系统将去掉报文VLAN Tag,然后再发送该报文。
注:对于华为交换机缺省VLAN被称为“Pvid Vlan” 对于思科交换机缺省VLAN被称为“Native Vlan”
交换机接口出入数据处理过程: Acess端口收报文:收到个报文判断是否有VLAN信息:如果没有则打上端口 PVID并进行交换、转发,如果有则直接丢弃(缺省)Acess端口发报文:将报文VLAN信息剥离直接发送出去
trunk端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口 PVID 并进行交换转发,如果有判断VLAND ID是否在该trunk的允许范围内,如果在范围内则转发,否则丢弃
trunk端口发报文:比较端口PVID和将要发送报文VLAN信息如果两者相等则剥离VLAN信息再发送,如果不相等则直接发送 hybrid端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口 PVID 并进行交换转发。如果有则判断该hybrid端口是否允许该VLAN数据进入:如果可以则转发,否则丢弃(此时端口上untag配置是不用考虑,untag配置只对发送报文时起作用)hybrid端口发报文:
1、判断该VLAN在本端口属性(disp erface 即可看到该端口对哪些VLAN是untag 哪些VL AN是tag)
2、如果是untag则剥离VLAN信息再发送如果是tag则直接发送
第二篇:简单网管交换机端口镜像功能设置(范文模版)
简单网管交换机端口镜像功能设置
文档适用产品型号:FS116E,JFS524E,GS105E,GS108Ev1,GS108Ev2,GS108PEv1,GS108PEv2,GS116E,JGS524E,XS708E,GS105PE 端口镜像
端口镜像功能是把交换机一个或多个端口的数据在发出或接收的同时复制一份到指定的镜像端口,以监测进出网络的所有数据包,从而很好的保证网络安全;在网络出现故障时,也能迅速地进行故障定位。简单网管交换机支持一(镜像端口)对多(源端口)的端口镜像。拓扑:
上图中,路由器连接在交换机XS708E的01号端口,监控主机连接在交换机的08号端口。一般所有出口的流量均会通过出口路由器,所以只需监控路由器端口即可收集局域网中所有上网数据。管理软件(ProSafe Plus Utility)版本:V2.2.24 配置:
进入系统>监控>端口镜像,配置界面如下图所示。
端口镜像:默认值为禁用,即未启用此功能,点选启用,启用端口镜像功能; 源端口:此处选择被监控的端口,这里选择连接出口路由器的01号端口; 目标端口:此处选择监控端口,即连接监控服务器的08号端口。
注意:源端口不可作为目标端口,并且源端口或目标端口不可作为LAG成员。点击应用。
第三篇:交换机工作原理
交换机工作原理
一、交换机的工作原理
1.交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。
2.交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。
3.如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)。
4.广播帧和组播帧向所有的端口转发。
二、交换机的三个主要功能
学习:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。
转发/过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播/组播帧则转发至所有端口)。
消除回路:当交换机包括一个冗余回路时,以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。
三、交换机的工作特性
1.交换机的每一个端口所连接的网段都是一个独立的冲突域。
2.交换机所连接的设备仍然在同一个广播域内,也就是说,交换机不隔绝广播(惟一的例外是在配有VLAN的环境中)。
3.交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路层的网络设备(此处所述交换机仅指传统的二层交换设备)。
四、交换机的分类
依照交换机处理帧时不同的操作模式,主要可分为两类:
存储转发:交换机在转发之前必须接收整个帧,并进行错误校检,如无错误再将这一帧发往目的地址。帧通过交换机的转发时延随帧长度的不同而变化。
直通式:交换机只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部的被接收,也不进行错误校验。由于以太网帧头的长度总是固定的,因此帧通过交换机的转发时延也保持不变。五、二、三、四层交换机? 多种理解的说法: 1.二层交换(也称为桥接)是基于硬件的桥接。基于每个末端站点的唯一MAC地址转发数据包。二层交换的高性能可以产生增加各子网主机数量的网络设计。其仍然有桥接所具有的特性和限制。
三层交换是基于硬件的路由选择。路由器和第三层交换机对数据包交换操作的主要区别在于物理上的实施。
四层交换的简单定义是:不仅基于MAC(第二层桥接)或源/目的地IP地址(第三层路由选择),同时也基于TCP/UDP应用端口来做出转发决定的能力。其使网络在决定路由时能够区分应用。能够基于具体应用对数据流进行优先级划分。它为基于策略的服务质量技术提供了更加细化的解决方案。提供了一种可以区分应用类型的方法。2.二层交换机 基于MAC地址
三层交换机 具有VLAN功能 有交换和路由 ///基于IP,就是网络
四层交换机 基于端口,就是应用 3.二层交换技术从网桥发展到VLAN(虚拟局域网),在局域网建设和改造中得到了广泛的应用。第二层交换技术是工作在OSI七层网络模型中的第二层,即数据链路层。它按照所接收到数据包的目的MAC地址来进行转发,对于网络层或者高层协议来说是透明的。它不处理网络层的IP地址,不处理高层协议的诸如TCP、UDP的端口地址,它只需要数据包的物理地址即MAC地址,数据交换是靠硬件来实现的,其速度相当快,这是二层交换的一个显著的优点。但是,它不能处理不同IP子网之间的数据交换。传统的路由器可以处理大量的跨越IP子网的数据包,但是它的转发效率比二层低,因此要想利用二层转发效率高这一优点,又要处理三层IP数据包,三层交换技术就诞生了。三层交换技术的工作原理
第三层交换工作在OSI七层网络模型中的第三层即网络层,是利用第三层协议中的IP包的包头信息来对后续数据业务流进行标记,具有同一标记的业务流的后续报文被交换到第二层数据链路层,从而打通源IP地址和目的IP地址之间的一条通路。这条通路经过第二层链路层。有了这条通路,三层交换机就没有必要每次将接收到的数据包进行拆包来判断路由,而是直接将数据包进行转发,将数据流进行交换 4.二层交换技术
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:
(1)当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
(2)再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
(3)如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
(4)如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。从二层交换机的工作原理可以推知以下三点:
(1)由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现线速交换;
(2)学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BEFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量;
(3)还有一个就是二层交换机一般都含有专门用于处理数据包转发的ASIC(Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。由于各个厂家采用ASIC不同,直接影响产品性能。
以上三点也是评判二三层交换机性能优劣的主要技术参数,这一点请大家在考虑设备选型时注意比较。
(二)路由技术
路由器工作在OSI模型的第三层---网络层操作,其工作模式与二层交换相似,但路由器工作在第三层,这个区别决定了路由和交换在传递包时使用不同的控制信息,实现功能的方式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地方,下一步应该向那里走,如果能从路由表中找到数据包下一步往那里走,把链路层信息加上转发出去;如果不能知道下一步走向那里,则将此包丢弃,然后返回一个信息交给源地址。
路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。
而路由表的维护,也有两种不同的方式。一种是路由信息的更新,将部分或者全部的路由信息公布出去,路由器通过互相学习路由信息,就掌握了全网的拓扑结构,这一类的路由协议称为距离矢量路由协议;另一种是路由器将自己的链路状态信息进行广播,通过互相学习掌握全网的路由信息,进而计算出最佳的转发路径,这类路由协议称为链路状态路由协议。
由于路由器需要做大量的路径计算工作,一般处理器的工作能力直接决定其性能的优劣。当然这一判断还是对中低端路由器而言,因为高端路由器往往采用分布式处理系统体系设计。
(三)三层交换技术
近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。组网比较简单
使用IP的设备A------------------------三层交换机------------------------使用IP的设备B 比如A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。
如果目的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。以上就是三层交换机工作过程的简单概括,可以看出三层交换的特点: 由硬件结合实现数据的高速转发。
这就不是简单的二层交换机和路由器的叠加,三层路由模块直接叠加在二层交换的高速背板总线上,突破了传统路由器的接口速率限制,速率可达几十Gbit/s。算上背板带宽,这些是三层交换机性能的两个重要参数。简洁的路由软件使路由过程简化。
大部分的数据转发,除了必要的路由选择交由路由软件处理,都是又二层模块高速转发,路由软件大多都是经过处理的高效优化软件,并不是简单照搬路由器中的软件。结论
二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。
路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由信息的交换等等路由器所具有功能。
三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由功能的快速转发的三层交换机就成为首选。
一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成,充分发挥不同设备的优点,不失为一种好的组网策略,当然,前提是客户的腰包很鼓,不然就退而求其次,让三层交换机也兼为网际互连。5.第四层交换的一个简单定义是:它是一种功能,它决定传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第三层路由),而且依据TCP/UDP(第四层)应用端口号。第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。
在第四层交换中为每个供搜寻使用的服务器组设立虚IP地址(VIP),每组服务器支持某种应用。在域名服务器(DNS)中存储的每个应用服务器地址是VIP,而不是真实的服务器地址。
当某用户申请应用时,一个带有目标服务器组的VIP连接请求(例如一个TCP SYN包)发给服务器交换机。服务器交换机在组中选取最好的服务器,将终端地址中的VIP用实际服务器的IP取代,并将连接请求传给服务器。这样,同一区间所有的包由服务器交换机进行映射,在用户和同一服务器间进行传输。
第四层交换的原理
OSI模型的第四层是传输层。传输层负责端对端通信,即在网络源和目标系统之间协调通信。在IP协议栈中这是TCP(一种传输协议)和UDP(用户数据包协议)所在的协议层。
在第四层中,TCP和UDP标题包含端口号(portnumber),它们可以唯一区分每个数据包包含哪些应用协议(例如HTTP、FTP等)。端点系统利用这种信息来区分包中的数据,尤其是端口号使一个接收端计算机系统能够确定它所收到的IP包类型,并把它交给合适的高层软件。端口号和设备IP地址的组合通常称作“插口(socket)”。
1和255之间的端口号被保留,他们称为“熟知”端口,也就是说,在所有主机TCP/I
P协议栈实现中,这些端口号是相同的。除了“熟知”端口外,标准UNIX服务分配在256到1024端口范围,定制的应用一般在1024以上分配端口号.分配端口号的最近清单可以在RFc1700”Assigned Numbers”上找到。TCP/UDP端口号提供的附加信息可以为网络交换机所利用,这是第4层交换的基础。
“熟知”端口号举例:
应用协议
端口号
FTP
20(数据)
21(控制)
TELNET
SMTP
HTTP
NNTP
119
NNMP
162(SNMP traps)
TCP/UDP端口号提供的附加信息可以为网络交换机所利用,这是第四层交换的基础。
具有第四层功能的交换机能够起到与服务器相连接的“虚拟IP”(VIP)前端的作用。
每台服务器和支持单一或通用应用的服务器组都配置一个VIP地址。这个VIP地址被发送出去并在域名系统上注册。
在发出一个服务请求时,第四层交换机通过判定TCP开始,来识别一次会话的开始。然后它利用复杂的算法来确定处理这个请求的最佳服务器。一旦做出这种决定,交换机就将会话与一个具体的IP地址联系在一起,并用该服务器真正的IP地址来代替服务器上的VIP地址。
每台第四层交换机都保存一个与被选择的服务器相配的源IP地址以及源TCP 端口相关联的连接表。然后第四层交换机向这台服务器转发连接请求。所有后续包在客户机与服务器之间重新影射和转发,直到交换机发现会话为止。
在使用第四层交换的情况下,接入可以与真正的服务器连接在一起来满足用户制定的规则,诸如使每台服务器上有相等数量的接入或根据不同服务器的容量来分配传输流。
第四篇:收费模式小结(定稿)
“收费模式”小结
随着高速路网快速发展,偷逃通行费的利益驱动也越来越来大,少数不法司机纷纷利用冲岗、垫钢板、假绿优等各种手段想方设法偷逃通行费。为避免通行费的流失,维护正常的收费秩序,苏通大桥北主线积极组织开展了将原有的“标识站模式”改为“收费站模式”活动,此次活动开展了为期三天,取得了阶段性成果。在此次“模拟收费”活动中受益颇多。
一是锻炼了査处能力。通过此次模拟收费,不懂、不会的与同事之间加强了交流沟通,对偷逃通行费的“倒卡车”、假“绿通车”、垫板车等行为,有了更深刻的认识,从而提高其打击偷逃通行费的能力。
二是进一步加强了责任心。在场外巡岗时,站着称重仪处,仔细观察司机过磅情况,发现跳磅、走S弯等异常行为,及时纠正制止,严禁闲杂人员靠近收费现场;查“绿优车”时,更是没有一丝马虎,按照文件要求,符合绿优条件,确认无误后才上报亭内收费员,给予“绿优”免费;在亭内操作时,仔细核查轴型、车牌是否一致,认真区分客、货车,确保无误后,才判型给予放行,工作中时时刻刻保持着高度的责任心。
在此次活动中,尽管付出了辛勤和努力,但在有些方面还是显露出不足,存在粗心大意,不够细心的现象,为此加以深刻反省,在今后工作中,一定认真总结经验,克服不足,力求把工作做得更细致、严谨,从而不增加没有必要的麻烦。
第五篇:设计模式小结
-----摘自设计模式之禅
一、创建类模式:
包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,提供对象的创建和管理职能。
1、单例模式是要保持在内存中只有一个对象。
2、原型模式是要求通过赋值的方式产生一个新的对象。
3、工厂方法模式和建造者模式都属于对象创建类模式,都用来创建类的对象。区别:(1)意图不同
工厂方法模式,关注的是一个产品整体。无须关注产品的各部分是如何创建出来的;建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。简单的说,工厂模式是一个对象创建的组线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的产品组成部分的创建过程。(2)产品的复杂度不同
工厂方法模式创建的产品一般都是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部分复合而成,部件不同产品对象不同。它们的粒度大小不同,一般来说,工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。
4、抽象工厂模式比建造者模式的尺度要大,它关注产品整体,而建造者模式关注构建过程,因此建造者模式可以很容易地构建出一个崭新的产品,只要导演类能够提供具体的工艺流程。也正因为如何,两者的应用场景截然不同,如果希望屏蔽对象的创建过程,只提供一个封装良好的对象,则可以选择抽象工厂方法模式。而建造者模式可以用在构件的装配方面,如通过装配不同的组件或者相同组件的不同顺序,可以产生一个新的对象,它可以产生一个非常灵活的架构,方便地扩展和维护系统。
二、结构类模式 包括适配器模式、桥梁模式、组合模式、装饰模式、门面模式、享元模式和代理模式。
1、代理模式与装饰模式
代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,它不对被主题角色(被代理类)的功能做任务处理。代理模式使用到极致开发就是AOP,使用了代理和反射的技术。
装饰模式是在要保证接口不变的情况下加强肋的功能,它保证的是被修饰的对象功能比原始对象丰富(或减弱),但不做准入条件判断和准入参数过滤,如是否可以执行类的功能,过滤输入参数是否合规等,这不是装饰模式关心的。
在jdk的java.io.*包中大量使用装饰模式
2、装饰模式与适配器模式 a.意图不同
装饰模式的意图是加强对象的功能,它不改变类的行为和属性,只是增加(减弱)功能;而适配器莫斯关注的则是转化,它的主要意图是两个不同对象之间的装好,它关注转换。b.施与对象不同
装饰模式装饰的对象必须是自己得同宗,也就是相同的接口或父类,只有在具有相同的属性和行为的情况下,才能比较行为是增加还是减弱;适配器模式则必须是两个不同的对象,因为它着重于装换,只有两个不同的对象才有装换的必要。c.场景不同
装饰模式在任何时候都可以使用,只要是想增强类的功能,而适配器模式则是一个补救模式,一般出现在系统成熟或已经构建完毕的项目中,作为一个紧急处理手段采用 d.扩展性不同
装饰模式很容易扩展;但适配器模式建立模式,去除困难。
三、行为类模式 包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。
1、策略模式与命令模式
两个模式相似,特别是命令模式退化时,如无接受者,这种情况下,两个模式类图完全一样,代码实现也比较相似,区别: a.关注点不同
策略模式关注的是算法替换的问题,一个新的算法投产,旧算法退休,或提供多种算法由调用者自己选择使用,算法的自由更替是它实现的要点。换句话说,策略模式关注的是算法的完整性、封装性,只有具备了这两个条件才能保证其可以自由切换。
命令模式则关注的是解耦问题,如何让请求者和执行者解耦是它需要首先解决的,解耦的要求就是把请求内容封装为一个个的命令,由接收者执行。由于封装成了命令,就同时可以对命令进行多种处理,例如撤销、记录等 b.角色功能不同
策略模式中的具体算法是负责一个完整的算法逻辑,它是不可再拆分的原子业务单元,一旦变更就是对算法整体的变更。
而命令模式则不同,它关注命令的实现,也就是功能的实现。接收者对命令负责,与请求者无关。命令模式中的接收者只要符合六大设计原则,完全不用关心它是否完成了一个具体逻辑,它的影响范围也仅仅是抽象命令和具体命令,对它的修改不会扩散到模式外的模块。
c.策略模式使用于算法要求变换的场景,而命令模式适用于解耦两个有紧耦合关系的对象场合或多撤销的场景。
2、策略模式与状态模式 a.环境角色的职责不同
两者都有一个叫做context环境角色的类,但区别很大,策略模式的环境角色只是一个委托左右,负责算法的替换;而状态模式的环境角色不仅仅是委托行为,它还具有登记状态变化的功能,与具体的状态类协作,共同完成状态切换行为随之切换的任务 b.解决问题的重点不同
策略模式旨在解决内容算法如何改变的问题,也就是将内部算法的改变对外界的影响降低到最小程度,它保证的是算法可以自由地切换;而状态模式旨在解决内在状态的改变而引起行为改变的问题,它的出发点是事物的状态,封装状态而暴露行为,一个对象的状态改变,从外界来看好像是行为改变。c.解决问题的方法不同。
策略模式只是确保算法可以自由切换,但是什么时候用什么算法它决定不了;而状态模式对外暴露的是行为,状态的变化一般是由环境角色和具体状态共同完成的,也就是说状态模式封装了状态的变化而暴露了不同的行为或行为结果。d.应用场景不同
策略模式是一系列平行的、可相互替换的算法封装后的结果,这就限定了它的应用场景:算法必须是平行的。状态模式则要求有一系列状态发生变化的场景,它要求的是有状态且有行为的场景,也就是一个对象必须具有二维(状态和行为)描述采用采用状态模式,如果只有状态而没有行为,则状态的变化就失去了意义。e.复杂度不同
通常策略模式结构简单,易扩展。
状态模式比较复杂,它封装的是变化,而变化无穷。
3、观察者模式(触发链、观察者链)与责任链模式 a.链中的消息对象不同
从首节点开始到最终的尾节点,两个链中传递的消息对象是不同的。责任链模式基本不改变消息对象的结构,虽然每个节点都可以参与消费(一般不参与消防),但它的结构不会改变;再触发链模式中传递的对象是可以自由变换,只要上下级节点对传递对象了解即可,它不要求链中的消息对象不变化,它只要求链中相邻两个节点的消息对象固定
四、综合1、2、b.上下节点的关系不同
在责任链模式中,上下节点没有关系,都是接收同样的对象,所有传递的对象都是从链首传递过来,上一节点是什么没关系,只要按照自己得逻辑处理就成。而出发链模式就不同,它的上下级关系很亲密,下级对上级顶礼膜拜,上级对下级绝对信任,链中的任意两个相邻节点都是一个牢固的独立团体。c.消息的分销渠道不同
再责任链模式中,一个消息从链首传递进来后,就开始沿着链条向链尾运动,方向是单一的、固定的;而触发链模式则不同,由于它采用的是观察者模式,所以有非常大的灵活性,一个消息传递到链首后,具体怎么传递是不固定的,可以以广播方式传递,也可以以跳跃方式传递,取决于逻辑。
策略模式与桥梁模式
策略模式是一个行为模式,旨在封装一系列的行为。而桥梁模式则是解决在不破坏封装的情况下如何抽取出它的抽象部分和实现部分,它的前提是不破坏封装,让抽象部分和实现部分都可以独立地变化。简单的说,策略模式是使用和实现都可以独立扩展的模式。桥梁模式必然有两个“桥墩”-抽象化角色和实现化角色,只要桥墩搭建好,桥就有了,而策略模式只有一个抽象角色,可以没有实现,也可以有很多实现。
门面模式与中介者模式
门面模式是以封装和隔离为主要任务,而中介者模式则是以调和同事类之间的关系为主,因为要调和,所以具有了部分的业务逻辑控制。区别: a.功能区别
门面模式只是增加了一个门面,它对子系统来说没有增加任务的功能,子系统若脱离门面模式是完全可以独立原型的。而中介者模式则增加了业务功能,它把各个同事类中的原有耦合关系移植到了中介者,同事类不可能脱离中介者而独立存在,除非是想增加系统的复杂性和降低扩展性。b.知晓状态不同
对门面模式来说,子系统不知道有门面存在,而对中介者来说,每个同事类都知道中介者存在,因为要依靠中介者调和同事之间的关系,他们对中介者非常了解。c.封装程度不同
门面模式是一种简单的封装,所有的请求处理都委托给子系统完成,而中介者模式则需要有一个中心,由中心协调同事类完成,并且中心本身也完成部分业务,它属于更进一步的业务功能封装。