设计模式中的装饰模式,外观模式,享元模式,迭代器模式,中介者模式,命令模式,解释器模式,策略模式等

1. 装饰模式_IO流底层架构_装饰和桥接模式的区别

(1)什么是装饰模式?

装饰模式(Decorator)也叫包装器模式(Wrapper)
装饰模式降低系统的耦合度,可以动态的增加或删除对象的职责,并使得需 要装饰的具体构建类和具体装饰类可以独立变化,以便增加新的具体构建类和具 体装饰类。

(2)装饰模式和桥接模式的区别是什么?

两个模式都是为了解决过多子类对象问题。但他们の诱因不一样。桥模式是对象自身现有机制沿着多个维度变化,是既有部分不稳定。装饰模式是为了增加新的功能。

2.外观模式_公司注册流程_迪米特法则

(1)什么是外观模式?什么情况下会使用到外观模式?

外观模式概念:
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

开发中常见的场景
– 频率很高。哪里都会遇到。各种技术和框架中,都
有外观模式的使用。如:
• JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类、Spring JDBC工具类等

3.享元模式_享元池_内部状态_外部状态_线程池_连接池

(1)什么是享元模式,使用享元模式能带来什么便捷?

享元模式概念:
主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式优点:
极大减少内存中对象的数量
– 相同或相似对象内存中只存一份,极大的节约资源,提高系统性能
– 外部状态相对独立,不影响内部状态

4.责任链模式_公文审批_供应链系统的采购审批_异常链_过滤器_拦截器调用过程
(1)什么是责任链模式?
将能够处理同一类请求的对象连成一条链,所提交的请求沿着传递,链上的对象逐个判断是否有能力处理该请求,如果能够则处理,如果不能则传递给链上的下一个对象。
(2)责任链模式在我们学到的哪些技术中用到了?常用的业务场景是什么样的?
开发中常见的场景:
– Java中,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个catch.
– Javascript语言中,事件的冒泡和捕获机制。Java语言中,事件的处理采用观察者模式。
– Servlet开发中,过滤器的链式处理
– Struts2中,拦截器的调用也是典型的责任链模式

5.迭代器模式_JDK内置迭代器_内部类迭代器

(1)什么是迭代器模式,特点是什么?

迭代器模式用于顺序访问集合对象的元素,而无需知晓集合对象的底层表示。
在迭代器模式中,一个非常显著的特点是其持有游标cursor,用于指示当前位置

6.中介者模式_同事协作类_内部类实现

(1)什么是中介者模式?在什么业务场景下使用这个模式?

中介者模式通过使用一个中介对象来封装一系列对象的交互过程,使这些对象无需彼此显式的相互引用,从而降低多个类和对象之前通信的复杂性。
使用场景:系统中对象之间存在着较为复杂的引用关系,使得他们结构混乱;想通过一个中间类封装多个类中的行为,而又不想生成太多的子类。

7.命令模式_数据库事务机制底层架构实现_撤销和恢复

(1)什么是命令模式?说说命令模式的特点和常用业务场景

命令模式是一种数据驱动的设计模式,属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象,并把命令传递给相应的对象,由该对象执行命令。
命令模式的特点是将请求封装为一个对象,降低了系统的耦合度。
常用场景:凡是带有命令的地方都可以使用命令模式。

8.解释器模式_访问者模式_数学表达式动态解析库

(1)什么是解释器模式,特点是什么?什么场景下使用这个设计模式?

解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
特点:灵活、扩展性高;增加了新的解释表达式的方式;容易实现简单的文法。
使用场景:将一个需要解释执行的语言中的句子表示为一个抽象语法树;一些重复出现的问题可以用一种简单的语言进行表达;一个简单语法需要解释的场景。

9.策略模式_CRM中报价策略_GUI编程中布局管理底层架构

(1)什么是策略模式,特点是什么?什么场景下使用这个设计模式?

策略模式是行为型模式的一种,它允许一个类的行为或者算法可以在运行时更改。
使用场景:系统中存在许多相似的类,他们仅是行为不同;一个徐通需要动态的选择算法。

10.模板方法模式_钩子函数_方法回调_好莱坞原则

(1)什么是模板方法模式?

模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

(2)什么是钩子函数?

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

(3)什么是好莱坞原则?

子类不能调用父类,调用过程由父类完全控制。

11.状态模式_UML类图_酒店系统房间状态_线程对象状态切换

(1)什么是状态模式? 特点是什么?什么场景下使用这个设计模式?

状态模式允许对象在内部状态发生改变时改变它的行为。
特点:封装了转换规则;枚举可能的状态,在枚举状态之前需要确定状态的种类;将状态封装为一个对象,仅需要改变该状态对象就可以实现改变行为
使用场景:对象行为随状态而改变的场景;用于替代条件、分支语句。

12.观察者模式

(1)什么是观察者模式?特点是什么? 什么场景下使用这个设计模式?

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
使用场景:
一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。
一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。
一个对象必须通知其他对象,而并不知道这些对象是谁。
需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。

13.备忘录模式

(1)什么是备忘录模式?特点是什么? 什么场景下使用这个设计模式?

备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
特点:能够比较方便的恢复到某个特定的历史状态;实现了信息的封装,用户无需关注信息保存的细节。
使用场景:涉及保存/恢复数据的场景;支持事务回滚操作的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值