java三年面试题(设计模式篇)不定期更新

java三年面试题(设计模式篇)不定期更新

1. 什么是设计模式 ?

设计模式不是软件工程的专属名词,实际上设计模式是从建筑学引申到软件工程的。建筑学中研究将一个庭院设计的更美观,形成了一些公认的规范和标准,称之为设计模式。软件工程将其引申到软件设计上,旨在设计出更加美观,可维护更强的软件。

2.工厂模式和抽象模式有什么区别?

这两种设计模式主要的区别在于产品,工厂模式是用来创建同一个产品的不同类型的,但是抽象工厂模式是用来创建不同类的产品,一般来说,产品种类单一,适合用工厂模式;如果有多个种类,各种类型时,通过抽象工厂模式来进行创建是很合适的。

3.面向对象设计原则有那些?
  1. 单一职责原则SRP(Single Responsibility Principle)

  2. 开放-关闭原则OCP(Open-Closed Principle)
    所谓开放一关闭原则,指的是,一个类应该对扩展开放,对修改关闭。

  3. 里氏替换原则LSP(Liskov Substitution Principle)
    所谓里氏替换原则,指的是,子类型必须能够替换掉它们的父类型。

  4. 依赖倒置原则DIP(Dependence Inversion Principle)
    所谓依赖倒置原则,指的是,要依赖于抽象,不要依赖于具体类。

  5. 接口隔离原则ISP(Interface Segregation Principle)
    所谓接口隔离原则,指的是,不应该强迫客户依赖于他们不用的方法。

  6. 最少知识原则LKP(Least Knowledge Principle)
    所谓最少知识原则,指的是,只和你的朋友谈话。

  7. 其他原则
    ■ 面向接口编程;

    ■ 优先使用组合,而非继承。

    ■ 一个类需要的数据应该隐藏在类的内部;

    ■ 类之间应该零耦合,或者只有传导耦合,换句话说,类之间要么没有关系,要么只使用另一个类的接口提供的操作;

    ■ 在水平方向上尽可能统一地分布系统功能;

4.简要概括各个设计模式?

简单工厂的本质是:选择实现。
外观模式的本质是:封装交互,简化调用。
适配器模式的本质是:转换匹配,复用功能
单例模式的本质:控制实例数目。
工厂方法模式的本质:延迟到子类来选择实现。
抽象工厂模式的本质:选择产品簇的实现。
生成器模式的本质:分离整体构建算法和部件构造。
原型模式的本质:克隆生成对象。
中介者模式的本质:封装交互。
代理模式的本质:控制对象访问。
观察者模式的本质:触发联动。
命令模式的本质:封装请求。
迭代器模式的本质:控制访问聚合对象中的元素。
组合模式的本质:统一叶子对象和组合对象。
模板方法模式的本质:固定算法骨架。
策略模式的本质:分离算法,选择实现。
状态模式的本质:根据状态来分离和选择行为。
备忘录模式的本质:保存和恢复内部状态。
享元模式的本质:分离与共享。
解释器模式的本质:分离实现,解释执行。
装饰模式的本质:动态组合。
职责链模式的本质:分离职责,动态组合。
桥接模式的本质:分离抽象和实现。
访问者模式的本质:预留通路,回调实现。

5.适配器优缺点?

适配器模式有如下优点:
■ 更好的复用性
如果功能是已经有了的,只是接口不兼容,那么通过适配器模式就可以让这些功能得到更好的复用。
■ 更好的可扩展性
在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

适配器模式有如下缺点:
■ 过多地使用适配器,会让系统非常零乱,不容易整体进行把握。

6.工厂模式优缺点?

工厂方法模式的优点:
■ 可以在不知具体实现的情况下编程
■ 更容易扩展对象的新版本
■ 连接平行的类层次

工厂方法模式的缺点:
■ 具体产品对象和工厂方法的耦合性。
在工厂方法模式中,工厂方法是需要创建产品对象的,也就是需要选择具体的产品对象,并创建它们的实例,因此具体产品对象和工厂方法是耦合的。

7.抽象工厂的优缺点?

抽象工厂模式的优点:
■ 分离接口和实现
■ 使得切换产品簇变得容易

抽象工厂模式的缺点:
■ 不太容易扩展新的产品
■ 容易造成类层次复杂

8.观察者模式的优缺点

观察者模式具有以下优点:
■ 观察者模式实现了观察者和目标之间的抽象耦合
■ 观察者模式实现了动态联动
■ 观察者模式支持广播通信

观察者模式的缺点是:
■ 可能会引起无谓的操作

由于观察者模式每次都是广播通信,不管观察者需不需要,每个观察者都会被调用update方法,如果观察者不需要执行相应处理,那么这次操作就浪费了。其实浪费了还好,最怕引起误更新,那就麻烦了,比如,本应该在执行这次状态更新前把某个观察者删除掉,这样通知的时候就没有这个观察者了,但是现在忘掉了,那么就会引起误操作。

9. 策略模式的优缺点

策略模式有以下优点:
■ 定义一系列算法
■ 避免多重条件语句
■ 更好的扩展性

策略模式有以下缺点:
■ 客户必须了解每种策略的不同
■ 增加了对象数目
■ 只适合扁平的算法结构

10. 装饰模式的优缺点

装饰模式有以下优点:
■ 比继承更灵活
■ 更容易复用功能
■ 简化高层定义

装饰模式的缺点是:
会产生很多细粒度对象。

11. 为什么使用桥接模式?

■ 分离抽象和实现部分

■ 更好的扩展性

■ 可动态地切换实现

■ 可减少子类的个数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值