软考——设计模式理解
- 视频有关的注释:
- P39 抽象工厂加实体工厂的创建方式在 web中statement是由connection类创建的原理差不多,可能有些不同,但这样类比可以有助于理解
- P39 factory被当作了coffeestore的一个属性,set方法设置这个属性,这样我也可以看出其实原本(即不用工厂时),咖啡的种类其实也可以当成store的属性
- P42 相当于整合了一些类,把同一产品族的整合到一个类,而同一产品族的不同产品可以从实体工厂的不同方法获得,这个原理可以用NET穿越里一个ip对应NET IP的一个端口号来类比理解。
,输入法整体换皮肤可以用这个来实现,因为都是一整套的要换一起换
- P49原型模式中无论是深克隆还是浅克隆,克隆出来的新对象的地址都与被克隆的对象不同,但是浅克隆中的非对象属性并不是克隆而来的而是直接赋值被克隆对象的非对象属性的引用得来的,而深赋值对每个非对象属性都实行克隆,这样克隆对象的非对象属性与被克隆对象的非对象属性的引用不同,但在浅克隆中是相同的。
- P51 Bike类是最终要组装的产品,它里面的属性是他的各个构件,他的单个构件的构造由builder的具体类中的方法分别构造,组装通过Director中的construct方法按产品需求的顺序调用和组合Builder中各个构件的构造方法来实现装配,并返回一个成品类bike。
- P53 这样模式扩展还有一个好处就是用户可以自定义输入的参数的个数和顺序,而不用一开始就提供很多种构造方法,且可读性好。
- P62 为了更好理解代理模式,servlet也是一个代理(虽然不太合理,其实更偏外观模式,servlet实际上是个中介模式),代理可以是n对n的,代理可以对多个目标类增强,而不是只能对一个目标类进行增强,但是通常是为一个类提供代理,而且建立代理类也可以符合只扩展不修改的原则。设计模式是一种思想,而不是死板的模式。代理模式其实和工厂模式差不多,本质都是解耦,解双方之间的耦。而且代理模式可以隐藏目标类,这可以保护目标类,如防火墙,这很重要。
- P66 适配器模式的目的是为了让适配者接口转换成目标接口可以接受的模式,适配器需要继承适配者并实现目标接口。
- P71 装饰者模式的装饰者通过定义一个被装饰者的一个成员变量以实现聚合,把被装饰者的基本信息保存在这个变量中,且由于装饰者是继承了被装饰者所以,原本的那些属性也被继承下来,而这些属性用于保存装饰品的信息,由于装饰品和被装饰者是装饰与被装饰的关系,因此他们性质应该是一样的,所以从被装饰者继承的成员属性可以用来保存装饰品的信息。还有就是装饰品是继承了装饰者抽象类的,其构造函数的参数是一个基类的抽象被装饰者,因此可以对一个被装饰者多次装饰,以这个被装饰者为参数保存了再次被装饰前的状态,即可得到再次被装饰后的被装饰品。装饰模式方便扩展,通过继承被装饰者基类或装饰者基类可以达到增加具体被装饰者和装饰者的目的,装饰模式是包装的艺术。
- P76 桥接模式常用于两个平行的族,最终产品是由这个两个族各任意一个成员组合而成,该产品同时具有这两个族的特点,如果有两个族,特们分别有4种情况,那么最终我们需要写16个最终产品类,而用桥接模式一个族聚合一个族继承来组合最终产品只用8个类(每种情况单一个类),且当有n个族时,不才用桥接模式会有爆炸式的类。而且易扩展不用修改原先的代码。
- P78 外观模式和代理模式,外观模式提供统一接口,从业务的角度,似乎外观模式更能体现代理的功能,他同样也是解除耦合,外界只与他通讯和代理模式很像,但代理模式有增强功能且其目的是隐藏目标类这些都是外观模式没有的,且代理模式更倾向于为单一的目标类提供,而外观模式相当于包装多个类。代理模式常用于不能直接引用对象的时候,在提供了代理类以后,方便于公开,没人再会关注目标类,因此可以更好隐藏目标类,且不是所有的目标类都适合大力度公布。代理模式是隐藏一个对象,把操作对象的复杂操作用单一接口整合,用多个借口简化外界对他的操作同时也掩盖了目标类本身操作的实现,可以把代理类类比成操作系统或者数据库管理系统,这么讲的话其实上面那个servlet的例子就不太合适了,而外观模式则是为了方便外界调用各个类才提供的单一接口,可以类比成网关路由器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南