- 装饰模式_IO流底层架构_装饰和桥接模式的区别
- 什么是装饰模式?
装饰器模式允许在不改变一个类结构的情况下,动态地为其添加新的功能。
-
- 装饰模式和桥接模式的区别是什么?
装饰模式核心作用是动态地给一个对象添加一些额外的职责。
桥接模式核心作用是将抽象部分与实现部分分离,使它们都可以独立的变化。
- 外观模式_公司注册流程_迪米特法则
- 什么是外观模式?什么情况下会使用到外观模式?
外观模式隐藏了一个复杂系统的内部功能实现,并为客户端提供了一个统一的访问接口。
使用场景:
-
-
-
-
-
- 为复杂的模块或子系统提供外界访问的模块
- 实现子系统的独立
-
-
-
-
- 享元模式_享元池_内部状态_外部状态_线程池_连接池
- 什么是享元模式,使用享元模式能带来什么便捷?
享元模式主要用于减少创建对象的数量,从而减少对系统资源的占用并提高性能。
- 责任链模式_公文审批_供应链系统的采购审批_异常链_过滤器_拦截器调用过程
- 什么是责任链模式?
责任链模式为请求创建了一个接收者对象的链,实现了请求发送者和接收者的解耦。在责任链模式下,若一个对象不能处理该请求,则将请求传给下一个接收者,并依次类推。
-
- 责任链模式在我们学到的哪些技术中用到了?常用的业务场景是什么样的?
应用实例:tomcat中encoding的处理,servlet中的filter
常用场景:多个对象处理一个请求,但具体由哪个对象处理运行时决定;在不明确指定接收者的情况下,像多个对象提交一个请求;需要动态的指定一组对象处理某个请求。
- 迭代器模式_JDK内置迭代器_内部类迭代器
- 什么是迭代器模式,特点是什么?
迭代器模式用于顺序访问集合对象的元素,而无需知晓集合对象的底层表示。
在迭代器模式中,一个非常显著的特点是其持有游标cursor,用于指示当前位置
- 中介者模式_同事协作类_内部类实现
- 什么是中介者模式?在什么业务场景下使用这个模式?
中介者模式通过使用一个中介对象来封装一系列对象的交互过程,使这些对象无需彼此显式的相互引用,从而降低多个类和对象之前通信的复杂性。
使用场景:系统中对象之间存在着较为复杂的引用关系,使得他们结构混乱;想通过一个中间类封装多个类中的行为,而又不想生成太多的子类。
- 命令模式_数据库事务机制底层架构实现_撤销和恢复
- 什么是命令模式?说说命令模式的特点和常用业务场景
命令模式是一种数据驱动的设计模式,属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象,并把命令传递给相应的对象,由该对象执行命令。
命令模式的特点是将请求封装为一个对象,降低了系统的耦合度。
常用场景:凡是带有命令的地方都可以使用命令模式。
- 解释器模式_访问者模式_数学表达式动态解析库
- 什么是解释器模式,特点是什么?什么场景下使用这个设计模式?
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
特点:灵活、扩展性高;增加了新的解释表达式的方式;容易实现简单的文法。
使用场景:将一个需要解释执行的语言中的句子表示为一个抽象语法树;一些重复出现的问题可以用一种简单的语言进行表达;一个简单语法需要解释的场景。
- 策略模式_CRM中报价策略_GUI编程中布局管理底层架构
- 什么是策略模式,特点是什么?什么场景下使用这个设计模式?
策略模式是行为型模式的一种,它允许一个类的行为或者算法可以在运行时更改。
使用场景:系统中存在许多相似的类,他们仅是行为不同;一个徐通需要动态的选择算法。
- 模板方法模式_钩子函数_方法回调_好莱坞原则
- 什么是模板方法模式?
模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
-
- 什么是钩子函数?
钩子函数是某个系统消息被触发时被系统调用的回调函数。
-
- 什么是好莱坞原则?
子类不能调用父类,调用过程由父类完全控制。
- 状态模式_UML类图_酒店系统房间状态_线程对象状态切换
- 什么是状态模式? 特点是什么?什么场景下使用这个设计模式?
状态模式允许对象在内部状态发生改变时改变它的行为。
特点:封装了转换规则;枚举可能的状态,在枚举状态之前需要确定状态的种类;将状态封装为一个对象,仅需要改变该状态对象就可以实现改变行为
使用场景:对象行为随状态而改变的场景;用于替代条件、分支语句。
- 观察者模式
- 什么是观察者模式?特点是什么? 什么场景下使用这个设计模式?
观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
使用场景:
一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。
一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。
一个对象必须通知其他对象,而并不知道这些对象是谁。
需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。
- 备忘录模式
- 什么是备忘录模式?特点是什么? 什么场景下使用这个设计模式?
备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
特点:能够比较方便的恢复到某个特定的历史状态;实现了信息的封装,用户无需关注信息保存的细节。
使用场景:涉及保存/恢复数据的场景;支持事务回滚操作的场景。