Android面试题_安卓面经(23/30)设计模式源码案例

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)


嵌入式


本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓高频开发面试题的理解;

网上安卓资料千千万,笔者将继续维护专栏,一杯奶茶价格不止提供答案解析,承诺提供专栏内容免费技术答疑,直接咨询即可。助您提高安卓面试准备效率,为您面试保驾护航!

正文开始⬇

无论是做哪种编程语言的开发工作,过了新手期后,都需要了解设计模式,在安卓开发中也一样,本人曾在面试中让我列举安卓源码中设计模式的案例。面试官可能会问:

  1. 说说设计模式的六大原则。⭐⭐⭐
  2. 请简要谈一谈单例模式?⭐⭐⭐⭐⭐
  3. 请列出几种常见的工厂模式并说明它们的用法?⭐⭐⭐⭐
  4. 静态代理和动态代理的区别,什么场景使用?⭐⭐⭐⭐⭐
  5. 谈一谈责任链模式的使用场景?⭐⭐⭐
  6. 请讲讲你会使用的一些设计模式?⭐⭐⭐⭐
  7. 能否给我说说Android中至少3个用到设计模式的例子? ⭐⭐⭐⭐⭐

看完以下的解析,一定可以让面试官眼前一亮。

目录

  • 1、面向对象的六大原则
  • 2、单例模式
  • 3、抽象工厂模式
  • 4、建造者模式
  • 5、代理模式
  • 6、观察者模式
  • 7、责任链模式
  • 8、装饰模式

1、面向对象的六大原则

  • 单一职责原则

  所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。通俗的说,即一个类只负责一项职责,将一组相关性很高的函数、数据封装到一个类中。

  • 开闭原则

  对于扩展是开放的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。对于修改是关闭的,对模块行为进行扩展时,不必改动模块的源代码。

  通俗的说,类、模块、函数等等等应该是可以拓展的,但是不可修改。

  • 里氏替换原则

  使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。任何基类可以出现的地方,子类一定可以出现。

  在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

  • 依赖倒置原则

  高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合(各个模块之间相互传递的参数声明为抽象类型,而不是声明为具体的实现类)。

  • 接口隔离原则

  一个类对另一个类的依赖应该建立在最小的接口上。其原则是将非常庞大的、臃肿的接口拆分成更小的更具体的接口。

  • 迪米特原则

  又叫作最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解。 通俗地讲,一个软件实体应当尽可能少地与其他实体发生相互作用。一个类应该对自己需要耦合或调用的类知道得最少,不关心被耦合或调用的类的内部实现,只负责调用你提供的方法。

本文主要是介绍安卓源码里使用设计模式的例子,如果不了解具体的设计模式思想,推荐看刘望舒-设计模式,如果你已经了解设计模式六大原则以及常用的设计模式,那么我们继续。

2、单例模式

InputMethodManager实例的获取是使用懒汉式单例模式,通过synchroniz

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Android高频面试题全解析 文章被收录于专栏

#提供免费售后答疑!!花一杯奶茶的钱获得安卓面试答疑服务,稳赚不赔# Android发展已经很多年,安卓资料网上千千万,本专栏免费提供专栏内容技术答疑!!私聊当天必回。在阅读过程或者其他安卓学习过程有疑问,都非常欢迎私聊交流。

全部评论
求更新
点赞 回复 分享
发布于 2023-03-01 20:16 广东

相关推荐

1 12 评论
分享
牛客网
牛客企业服务