【北京尚学堂·百战程序员】第107天

【北京尚学堂·百战程序员】第107天
最新回答
原諒莪暸

2026-02-06 23:26:02

第107天学习要点总结1. 装饰模式
  • 什么是装饰模式?装饰器模式允许在不改变一个类结构的情况下,动态地为其添加新的功能。

  • 装饰模式和桥接模式的区别是什么?

    装饰模式:核心作用是动态地给一个对象添加一些额外的职责。

    桥接模式:核心作用是将抽象部分与实现部分分离,使它们都可以独立的变化。

2. 外观模式与迪米特法则
  • 什么是外观模式?什么情况下会使用到外观模式?外观模式隐藏了一个复杂系统的内部功能实现,并为客户端提供了一个统一的访问接口。使用场景包括:

    为复杂的模块或子系统提供外界访问的模块。

    实现子系统的独立。

  • 迪米特法则(又称最少知道原则):一个对象应该对其他对象有最少的了解。

3. 享元模式
  • 什么是享元模式,使用享元模式能带来什么便捷?享元模式主要用于减少创建对象的数量,从而减少对系统资源的占用并提高性能。享元模式通过共享已经存在的对象实例来避免重复创建对象。
4. 责任链模式
  • 什么是责任链模式?责任链模式为请求创建了一个接收者对象的链,实现了请求发送者和接收者的解耦。在责任链模式下,若一个对象不能处理该请求,则将请求传给下一个接收者,并依次类推。

  • 责任链模式在我们学到的哪些技术中用到了?常用的业务场景是什么样的?

    应用实例:Tomcat中encoding的处理,Servlet中的Filter。

    常用场景:

    多个对象处理一个请求,但具体由哪个对象处理运行时决定。

    在不明确指定接收者的情况下,向多个对象提交一个请求。

    需要动态地指定一组对象处理某个请求。

5. 迭代器模式
  • 什么是迭代器模式,特点是什么?迭代器模式用于顺序访问集合对象的元素,而无需知晓集合对象的底层表示。在迭代器模式中,一个非常显著的特点是其持有游标(cursor),用于指示当前位置。
6. 中介者模式
  • 什么是中介者模式?在什么业务场景下使用这个模式?中介者模式通过使用一个中介对象来封装一系列对象的交互过程,使这些对象无需彼此显式的相互引用,从而降低多个类和对象之间通信的复杂性。使用场景包括:

    系统中对象之间存在着较为复杂的引用关系,使得他们结构混乱。

    想通过一个中间类封装多个类中的行为,而又不想生成太多的子类。

7. 命令模式
  • 什么是命令模式?说说命令模式的特点和常用业务场景命令模式是一种数据驱动的设计模式,属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象,并把命令传递给相应的对象,由该对象执行命令。

    特点:将请求封装为一个对象,降低了系统的耦合度。

    常用场景:凡是带有命令的地方都可以使用命令模式,如数据库事务机制底层架构实现、撤销和恢复功能等。

8. 解释器模式与访问者模式
  • 什么是解释器模式,特点是什么?什么场景下使用这个设计模式?解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。

    特点:灵活、扩展性高;增加了新的解释表达式的方式;容易实现简单的文法。

    使用场景:

    将一个需要解释执行的语言中的句子表示为一个抽象语法树。

    一些重复出现的问题可以用一种简单的语言进行表达。

    一个简单语法需要解释的场景,如SQL解析、符号处理引擎等。

  • 访问者模式(虽未直接提及,但通常与解释器模式一同讨论):用于将数据操作与数据结构分离。

9. 策略模式
  • 什么是策略模式,特点是什么?什么场景下使用这个设计模式?策略模式是行为型模式的一种,它允许一个类的行为或者算法可以在运行时更改。

    特点:定义了系列的算法,把它们一个个封装起来,并且使它们可相互替换。

    使用场景:

    系统中存在许多相似的类,他们仅是行为不同。

    一个系统需要动态的选择算法。

10. 模板方法模式、钩子函数与好莱坞原则
  • 什么是模板方法模式?模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

  • 什么是钩子函数?钩子函数是某个系统消息被触发时被系统调用的回调函数。

  • 什么是好莱坞原则?子类不能调用父类,调用过程由父类完全控制。

11. 状态模式
  • 什么是状态模式? 特点是什么?什么场景下使用这个设计模式?状态模式允许对象在内部状态发生改变时改变它的行为。

    特点:

    封装了转换规则。

    枚举可能的状态,在枚举状态之前需要确定状态的种类。

    将状态封装为一个对象,仅需要改变该状态对象就可以实现改变行为。

    使用场景:

    对象行为随状态而改变的场景。

    用于替代条件、分支语句。

12. 观察者模式
  • 什么是观察者模式?特点是什么? 什么场景下使用这个设计模式?观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

    特点:实现了对象之间的松耦合。

    使用场景:

    一个抽象模型有两个方面,其中一个方面依赖于另一个方面。

    一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变。

    需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。

13. 备忘录模式
  • 什么是备忘录模式?特点是什么? 什么场景下使用这个设计模式?备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。

    特点:

    能够比较方便的恢复到某个特定的历史状态。

    实现了信息的封装,用户无需关注信息保存的细节。

    使用场景:

    涉及保存/恢复数据的场景。

    支持事务回滚操作的场景。