iOS高级开发工程师面试——架构设计
iOS高级开发工程师面试——架构设计
- 一、 设计模式是为了解决什么问题的?
- 二、设计模式有 7 大原则
- 三、常见的设计模式有哪些?
- 单例模式
- 简单工厂模式
- 抽象工厂模式
- 代理模式(delegate)
- 观察者模式(KVO)
- 策略模式
- 四、谈谈单例的优缺点?
- 五、聊聊 MVC、MVP、MVVM设计模式?
- MVC:
- MVP
- MVVM
- 六、你的app架构是什么?有什么优缺点?为什么这么做?怎么改进?
一、 设计模式是为了解决什么问题的?
编写软件过程中,程序员面临着来自耦合性
、内聚性
以及可维护性
、可扩展性
、重用性
、灵活性
等多方面的挑战,设计模式是为了让程序具有更好的:
- 代码重用性(相同功能代码,不用多次编写)
- 可读性(编程规范性)
- 可扩展性(增加新功能时十分方便)
- 可靠性(增加新功能后,对原来的功能没有影响)
- 实现高内聚,低耦合的特性
二、设计模式有 7 大原则
- 单一职责原则
一个类只负责一个职责,一个函数只解决一个问题 - 接口隔离原则
大接口改多个小接口,原因外部不需要大接口这么多方法,更易控制 - 依赖反转原则
即面向接口编程,尽量不要声明具体类,而是使用接口,实现解耦 - 里氏替换原则
能出现父类的地方就一定可以用子类代替,即不要重写父类中的已实现的方法 - 开闭原则
面向扩展开放,面向修改封闭。即不要修改一个已实现的类,更不要修改类中的方法,应该选择创建新类或者创建新方法的方式解决 - 迪米特法则
又叫最少知道原则,即对外暴露的public方法尽量少,实现高内聚;且只和直接朋友通信 - 合成复用原则
即不要重复自己,不要在项目内copy代码,应该选择将要copy的代码抽离出来,实现多个类复用
三、常见的设计模式有哪些?
单例模式
意图
:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决
:一个全局使用的类频繁地创建与销毁,比如登陆用户的数据信息等。
简单工厂模式
简单工厂模式又叫静态工厂方法模式
,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
比如,一台咖啡机就可以理解为一个工厂模式,你只需要按下想喝的咖啡品类的按钮(摩卡或拿铁),它就会给你生产一杯相应的咖啡,你不需要管它内部的具体实现,只要告诉它你的需求即可。
抽象工厂模式
抽象工厂模式是在简单工厂的基础上将未来可能需要修改的代码抽象出来,通过继承
的方式让子类去做决定。
比如:以上面的咖啡工厂为例,某天我的口味突然变了,不想喝咖啡了想喝啤酒,这个时候如果直接修改简单工厂里面的代码,这种做法不但不够优雅,也不符合软件设计的“开闭原则”,因为每次新增品类都要修改原来的代码。这个时候就可以使用抽象工厂类了,抽象工厂里只声明方法,具体的实现交给子类&