- P84 由于菜单项不能使用remove方法,但是如果调用失误,即菜单项调用了继承来的remove方法时调用的是基类的remove方法,所以在基类的remove方法中加入异常,如果子类未重写remove就调用的话就会报错。对于那些基类方法在子类中可能因为表现不同导致暂时无法确定具体内容时就可以把它定义为抽象方法。
- P89 外部状态通过函数传进来参数来模拟环境的变化,然后享元根据环境来作出反应,内部状态可以享元的成员属性来实现共享,由于工厂模式是单例的,所以他的map这个成员属性也是固定的,map里定义的各个具体享元对象也是固定的,这样就实现了享元对象的单例,实现了共享。
- P102 命令模式具体命令类负责聚合命令和接收者,把它俩放在同一层次聚合这样有利于命令和接受者的自由组合,当然如果不聚合实现命令把命令直接写在命令类里也可以,请求者聚合命令类来让接受者执行命令,用抽象类当指针,,这样的3层聚合结构有利于解耦和代码改动。
- P110 状态模式抽象状态类里定义了各个状态的基本量和一些处理方法的抽象,这些处理方法在子类中会根据现在的状态做出不同的处理,环境类中聚合了4个具体状态对象,并设为常量,又聚合了一个抽象状态对象,它用于保存现有的状态,上面定义的4个具体状态对象是为了在状态改变时为抽象状态对象提供素材,而他的方法和具体状态的方法都相同,在每个方法中调用抽象状态变量的同名方法,由于这个变量是个基类指针,因此世纪上调用的是具状态中的相应方法,每个具体状态类的方法会根据当前的状态做出不同的响应,但是如何知道当前状态是啥呢,所以我们要在基类抽象状态类里聚合一个环境类变量方便让具体类了解当前状态,且状态的跳转和调用其他状态的方法也是通过改变环境类的基类变量或调用环境类的方法实现的,那么问题又来了,如何保证状态类中的环境类即例子里的context和测试类中定义的环境类变量是一个变量呢(我们最终使用的是环境类),在基类的构造方法是传一个环境类变量,当我们使用环境类变量时先传入一个具体状态类(通过构造方法),然后在这个构造方法中调用传入的具体状态的set环境类变量方法参数设为this代表本对象来实现连接。在视频中,具体状态类中的方法,只有职能和自己一样的方法才会做处理,剩下的方法会跳往其他状态,再执行这个状态的方法或者什么也不做,例如open state类只有open方法让电梯开启,其他都是跳转其他状态及什么也不做。状态模式是个环状结构,最终的使用类是环境类。
- P116,一个对象雨多个对象都有关系,当这个对象改变时其他对象也要改变,这个一个对象通常定义为被观察者,而那些随他改变的类是观察者。
- P118 学习了中介模式以后,就会发现servlet其实是个中介模式,是多个对象间关系的优化,而代理模式通常针对一个对象。代理模式是代理,中介模式才更偏中介。
- P119 中介模式中介类和同事类也是环形聚合,具体中介聚合了具体同事类,抽象同事类聚合了抽象的中介类,在案例中只能实现1对1至于怎么实现多对多,以及多对多中个体间的有身份识别的联系还得继续学习。
- P122 通过聚合对象的返回迭代器方法返回的迭代器,每次返回的都是一个新的迭代器,即指针开始都是0,因为该方法每次都新创建一个迭代器方法并用list初始化他。使用的最终产品是聚合对象方法返回的迭代器。迭代器还可以自定义遍历方法,这个根据需要自己实现。
- P127 访问说白了就是数据结构中存储的元素的算法,访问是对这些元素执行算法操作,通过结构类专门存储具体元素,而所有的算法存储在访问者类中,这样的好处就是不同于以往的数据结构现在的算法可以根据存储的元素来选择算法,例如栈里面不会因为他存储的是猫类或者狗类执行对应的算法。且把算法单独放在访问者中有利于在操作多变时替换算法,通过结构类的特定方法如本例中的action来装入具体的访问者来决定使用什么算法,或者用什么形式访问。
- P131 窄接口如何实现:由于JAVA多态机制,用基类指针指向子类,当调用去其方法时只能调用基类中有的方法,而这些方法的具体实现取决于子类,所以在备忘录管理者中用一个空方法的接口来接受备忘录,该引用只能保存但不能调用任何方法,以达到窄的目的。当从管理类中获取备忘录时还需要强转,因为此时他是基类类型。
- P135 该例解释器模式中加法的参数也为context,是想通过同一继承数的类之间同名方法的递归调用来获得左或右操作数表达式的值。该例中的variable就是终结符类,加法和减法是非终结符类。
posted @
2022-04-18 20:26
薛定谔的小冰
阅读(
38)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!