12、软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?

在软件开发过程中,我们经常会使用各种编程框架。如果你使用的是Java,那么你会比较熟悉Spring、MyBatis等。事实上,Tomcat、Jetty这类Web容器也可以归类为框架。框架的一个特点是,当开发者使用框架开发一个应用程序时,无需在程序中调...

后端技术面试 38 讲

13、软件设计的里氏替换原则:正方形可以继承长方形吗?

我们都知道,面向对象编程语言有三大特性:封装、继承、多态。这几个特性也许可以很快就学会,但是如果想要用好,可能要花非常多的时间。 通俗地说,接口(抽象类)的多个实现就是多态。多态可以让程序在编程时面向接口进行编程,在运行期绑定具体类,从而使得类之间不...

后端技术面试 38 讲

14、软件设计的单一职责原则:为什么说一个类文件打开最好不要超过一屏?

我在Intel工作期间,曾经接手过一个大数据SQL引擎的开发工作([如何自己开发一个大数据SQL引擎?])。我接手的时候,这个项目已经完成了早期的技术验证和架构设计,能够处理较为简单的标准SQL语句。后续公司打算成立一个专门的小组,开发支持完整的标准...

后端技术面试 38 讲

15、软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?

我在阿里巴巴工作期间,曾经负责开发一个统一缓存服务。这个服务要求能够根据远程配置中心的配置信息,在运行期动态更改缓存的配置,可能是将本地缓存更改为远程缓存,也可能是更改远程缓存服务器集群的IP地址列表,进而改变应用程序使用的缓存服务。 这就要求缓存服...

后端技术面试 38 讲

16、设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程

我在面试的时候,喜欢问一个问题:“你比较熟悉哪些设计模式?”得到的回答很多时候是“单例”和“工厂”。老实说,这个回答不能让人满意。因为在我看来,单例和工厂固然是两种经典的设计模式,但是,这些创建类的设计模式并不能代表设计模式的精髓。 设计模式的精髓在...

后端技术面试 38 讲

17、设计模式应用:编程框架中的设计模式

在绝大多数情况下,我们开发应用程序的时候,并不是从头开发的。比如,我们用Java开发一个Web应用,并不需要自己写代码监听HTTP 80端口;不需要处理网络传输的二进制HTTP数据包(参考[第4篇网络编程原理]);不需要亲自为每个用户请求分配一个处理...

后端技术面试 38 讲
123458