获得徽章 0
- #青训营 x 字节后端训练营#
Day 25 迭代器模式
1、迭代器模式是一种行为设计模式,主要是提供一种访问聚合对象元素的方法,但不用暴露底层描述。
2、迭代器模式由迭代器接口、具体迭代器、聚合对象接口、具体聚合对象。
3、主要就是定义迭代器接口,在具体的聚合类对象定义Iterator方法返回迭代器对象,进而通过迭代器对象的Next方法来遍历元素。
4、优点:统一的遍历接口;支持延迟加载。在遍历大型数据时集合时,迭代器模式可以避免一次性加载全部数据带来的内存开销,提高运行效率。
5、缺点:需要定义多个接口和类,增加代码复杂度;频繁遍历可能会影响性能;增加代码的维护成本。展开评论点赞 - #青训营 x 字节后端训练营#
Day 22 设计模式之观察者模式
1、该模式用于多个事件监听器监听同一个目标对象的事件,并在目标对象发生事件时进行相应的更新处理。
2、大致步骤是:实例化目标对象(PurchaseOperFunc )和多个观察者( create、isDeleted、apply),将观察者添加到目标对象中,最后调用目标对象oper,通知所有观察者进行相应操作。
3、优点是支持广播通信:当一个目标对象发生改变时会自动通知所有的观察者;还包括降低耦合、扩展性强、符合开闭原则等优点。
4、缺点:①观察者过多导致性能下降:当一个目标对象有很多观察者的时候,每个观察者都需要被及时通知,到时系统运行很慢、相应事件变长;②观察者与目标对象之间的关系复杂难以理解;③观察者可能观察到不必要的的细节,导致频繁的更新操作,性能下降;④容易出现循环依赖的问题;展开评论点赞 - #青训营 x 字节后端训练营#
Day 21 模板模式
1、模板模式用于定义一套算法框架,具体实现交由子类实现。
2、示例代码中:定义了两个结构体,Examination定义了两个函数,ExaminationDo则组合了Examination;在main函数中,ExaminationDo的两个方法赋值给Examination的对应函数变量并调用Examination的Questions方法,最后输出。
3、因此模板模式具有复用和扩展的优点,从这两点可以引出其他优点:实现开闭原则(将不变部分封装在父类中,可变部分扩展到子类,实现不修改代码即可进行功能的扩展和修改)、简化代码流程(将复杂的算法拆分成简单的步骤,易于理解和维护)。
4、缺点是:父类和子类耦合度较高,父类改变,子类也跟着变;可读性差:当整体结构较大,算法较为复杂时,增加理解成本;不够灵活,因为父类控制着子类,所以子类容易受到父类的影响。展开评论点赞 - #青训营 x 字节后端训练营#
Day 20 Cookie
1、Cookie是因为HTTP协议无状态而出现的,能提高下次游览器访问服务器的速度。
2、Cookie本质上是基于Key-Value存储的小文件,包含网站的相关信息,在服务器生成,移交给本地游览器保存,保存了游览器和服务器第一次连通的状态信息。
3、Coookie通过Expires和Max-Age两个属性来设置有效时间,时间到就会被删除,不会发给服务器。
4、关于Cookie作用域的属性有两个,分别是Domain和path,域名和路径,若两者不匹配则不发送Cookie
5、Cookie想通过HTTPS传输必须带上Secure,想通过HTTP传输必须带上HttpOnly属性;通过设置SameSite属性预防CSRF攻击,该属性有三个可选值,Strict、Lax、None,限制Cookie的发送。展开评论点赞 - #青训营 x 字节后端训练营#
Day 18 职责链模式
1、职责链模式是一种行为型设计模式,允许将请求沿着处理者链发送,极端情况下可以发送到最后一个处理者,避免了发送者和接收者之间的耦合关系。
2、可以通过链表、数组等数据结构形成职责链,取决于实际应用场景和需求。
3、多个对象处理同一个请求时,需要动态指定能够处理某个请求时都可以使用职责链模式
4、优点:实现发送者和接收者的解耦;能够动态添加、删除和修改请求;避免发送者和接收者之间形成依赖关系,增强系统的可扩展性和灵活性。
5、缺点:请求可能被处理多次,影响性能;链过长,导致处理时间过长;链过于复杂,增加调度和维护的难度。展开评论点赞