Java面试八股之设计模式
最近已经开始接近尾声了,接近一年的开发学习已经结束,到目前为止我自己能够明显感觉到收获非常大,回想当时自己坚定地想要学习Java的决心那时候的自己确实了不起,无数个日日夜夜奋战在台灯下修改Bug,调试程序,每当上下眼皮打架的时候都会站起身来好好思考自己到底要什么,是工作后的高薪待遇,还是每天可以躺平摸鱼的大厂,亦或是说就是为了一个小小的兴趣而已,受过身边的人的冷嘲热讽,也得到过身边人的鼓励,在网上论坛,B站上认识到不少志同道合的人,来自不同的城市,有时候一起研究一些问题到凌晨两三点而不觉困意(非必要,勿熬夜。钱虽多,命要紧 - _ - !),尤其是在学习框架的时候针对各种框架的骚操作有时候搞得我绕不过弯来,现在一想其实也没有那么难(也许是改Bug改多了连Bug都开始嫌弃我了觉得我不配改它们吧,所以后期基本很少出Bug),我的学习计划有一段时间由于忙着考试受到了不同程度的影响(主要是为了提升自己在未来发展中的竞争力,年少时的痛~~),总之呢,我个人还是比较乐观的,毕竟人嘛总会有一个经历过程,俗称社会的毒打,我这人除了意志力顽强以外还有一个优点就是脸皮忒厚,至今为止从来没有屈服过社会的淫威(这里应该有掌声),接下来很长一段时间我都将开始投简历开始找新工作
前言
例如:随着网络技术的不断发展,Java这门计算机语言在计算机市场上也越来越得到重视,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、设计模式简介
1.1 什么是设计模式
在Java开发中,我们常常听到设计模式这个概念,那么究竟什么是设计模式呢?所谓设计模式,它不是我们所学的Java开发框架,它更偏向于是一种思想,一种来自前人总结的设计思想,在我们的Java开发中能够给我们提供许多的设计策略与方式,从而能够有效地提高我们的开发效率。
1.2 Java中的开发模式分类
对于Java中的开发模式分类而言我们主要是通过它的开发原则来进行区分,大体分为三类,分别为:
(1)创建型模式:这是一种对象实例化的设计模式,其主要目的是用于解耦的实例化过程,从而达到对一个设计对象的创建。
(2)结构型模式:这是一种把类或对象结合在一起形成一个更大的结构
(3)行为型模式:类和对象如何交互,以及划分责任或者某种算法的时候的一种设计模式。
补充:Java中的设计原则:
设计原则 | 简单说明 |
---|---|
单一职责 | 一个类只负责一项职责 |
里氏替换原则 | 子类可以扩展父类的功能,但不能改变父类原有的功能 |
依赖倒置原则 | 要依赖于抽象,不要依赖于具体,核心思想是面向接口编程 |
接口隔离原则 | 建立单一接口,不要建立庞大繁杂的接口,尽量细化接口,接口中的方法尽量少 |
迪米特法则(最少知道原则) | 一个对象应该对其他对象保持最少的了解 |
开闭原则 | 对扩展开放,对修改关闭 |
二、三种分类模式的具体实例
后期我会继续写文章来具体说明23种设计模式的具体使用和Java设计中的举例
2.1 创建型模式
创建型设计模式主要是用来帮我们创建对象的。常见的创建者模式有:单例模式、抽象工厂、简单工厂、建造者模式、方法工厂、原型模型
2.2 结构型模式
该模式主要是关注于对象和类的组织。常见的结构型模式有:代理模式、组合模式、适配器模式、装饰器模式、享元模式、桥接模式、外观模式
2.3 行为模式:
行为模式关注系统中对象之间的相互交换,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,一共有11种:责任链模式、迭代器模式、观察者模式、模板模式、命令模式、中介者模式、状态模式、访问者模式、解释器模式、备忘录模式、策略模式
总结
以上就是今天要讲的内容,本文仅仅简单介绍了在Java开发中涉及到的设计模式,当然常用的也就只有那么几个,在后期的学习中我会慢慢将常用的设计模式发出来。此外,对于面试的时候,如果面试官问到了关于设计模式的问题,你大可以从三个方面来简单描述一下就行。分别从什么是设计模式、设计模式的原则、设计模式的分类(如果能够加上一些具体的案例会更好)