- P110 状态模式抽象状态类里定义了各个状态的基本量和一些处理方法的抽象,这些处理方法在子类中会根据现在的状态做出不同的处理,环境类中聚合了4个具体状态对象,并设为常量,又聚合了一个抽象状态对象,它用于保存现有的状态,上面定义的4个具体状态对象是为了在状态改变时为抽象状态对象提供素材,而他的方法和具体状态的方法都相同,在每个方法中调用抽象状态变量的同名方法,由于这个变量是个基类指针,因此世纪上调用的是具状态中的相应方法,每个具体状态类的方法会根据当前的状态做出不同的响应,但是如何知道当前状态是啥呢,所以我们要在基类抽象状态类里聚合一个环境类变量方便让具体类了解当前状态,且状态的跳转和调用其他状态的方法也是通过改变环境类的基类变量或调用环境类的方法实现的,那么问题又来了,如何保证状态类中的环境类即例子里的context和测试类中定义的环境类变量是一个变量呢(我们最终使用的是环境类),在基类的构造方法是传一个环境类变量,当我们使用环境类变量时先传入一个具体状态类(通过构造方法),然后在这个构造方法中调用传入的具体状态的set环境类变量方法参数设为this代表本对象来实现连接。在视频中,具体状态类中的方法,只有职能和自己一样的方法才会做处理,剩下的方法会跳往其他状态,再执行这个状态的方法或者什么也不做,例如open state类只有open方法让电梯开启,其他都是跳转其他状态及什么也不做。状态模式是个环状结构,最终的使用类是环境类。
- P116,一个对象雨多个对象都有关系,当这个对象改变时其他对象也要改变,这个一个对象通常定义为被观察者,而那些随他改变的类是观察者。
- P118 学习了中介模式以后,就会发现servlet其实是个中介模式,是多个对象间关系的优化,而代理模式通常针对一个对象。代理模式是代理,中介模式才更偏中介。
- P119 中介模式中介类和同事类也是环形聚合,具体中介聚合了具体同事类,抽象同事类聚合了抽象的中介类,在案例中只能实现1对1至于怎么实现多对多,以及多对多中个体间的有身份识别的联系还得继续学习。
posted @
2022-11-17 19:26
薛定谔的小冰
阅读(
7)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!