设计模式总结(持续更新~)

以下题目总结于:牛客网

相关总结:

计算机网络面试题总结

数据结构与算法面试题总结

C/C++面试题总结

数据库面试题总结

操作系统面试总结

1、请问你了解哪些设计模式?

参考答案:

常见的设计模式如下:

① 单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式有三个要素:

  • 一是某个类只能有一个实例;
  • 二是它必须自行创建这个实例;
  • 三是它必须自行向整个系统提供这个实例。

② 工厂模式:工厂模式主要解决接口选择的问题。该模式下定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,使其创建过程延迟到子类进行。

③ 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

⑤ 装饰器模式:对已经存在的某些类进行装饰,以此来扩展一些功能,从而动态的为一个对象增加新的功能。装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。

 

2、请问如何保证单例模式只有唯一实例?你知道的都有哪些方法?

参考答案:

单例的实现主要是通过以下两个步骤:

  • 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;
  • 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。

单例模式的实现主要有两种一种是饿汉式,一种是懒汉式

 

3、请你说一说 OOP 的设计模式的五项原则。

参考答案:

① 单一职责原则

单一职责有 2 个含义,一个是避免相同的职责分散到不同的类中,另一个是避免一个类承担太多职责。减少类的耦合,提高类的复用性。

② 接口隔离原则

表明客户端不应该被强迫实现一些他们不会使用的接口,应该把接口中方法分组,然后用多个接口代替它,每个接口服务于一个子模块。简单说,就是使用多个专门的接口比使用单个接口好很多。

该原则观点如下:
1)一个类对另外一个类的依赖性应当是建立在最小的接口上
2)客户端程序不应该依赖它不需要的接口方法。

③ 开放-封闭原则

open 模块的行为必须是开放的、支持扩展的,而不是僵化的。
closed 在对模块的功能进行扩展时,不应该影响或大规模影响已有的程序模块。

一句话概括:一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。核心思想就是对抽象编程,而不对具体编程。

④ 替换原则

子类型必须能够替换掉他们的父类型、并出现在父类能够出现的任何地方。

主要针对继承的设计原则
1)父类的方法都要在子类中实现或者重写,并且派生类只实现其抽象类中声明的方法,而不应当给出多余的方法定义或实现。
2)在客户端程序中只应该使用父类对象而不应当直接使用子类对象,这样可以实现运行期间绑定(动态绑定)。

⑤ 依赖倒置原则

上层模块不应该依赖于下层模块,他们共同依赖于一个抽象,即:父类不能依赖子类,他们都要依赖抽象类。抽象不能依赖于具体,具体应该要依赖于抽象。

 

 

 

你可能感兴趣的:(设计模式总结)