一起“干完”这份300页1000道面试题,值得一读!
## 一、先来解读:23种设计模式要点
### 1.单例模式(Singleton Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867098818646.jpg)
### 2.工厂模式
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867099908221.jpg)
### 3.抽象工厂模式(Abstract Factory Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867099268589.jpg)
### 4.模板方法模式(Template Method Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867100459442.jpg)
### 5.建造者模式(Builder Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867101323727.jpg)
### 6.代理模式(Proxy Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867101258771.jpg)
### 7.原型模式(Prototype Pattern)
### 8.中介者模式
### 9.命令模式
### 10.责任链模式
### 11.装饰模式(Decorator Pattern)
### 12.策略模式(Strategy Pattern)
### 13.适配器模式(Adapter Pattern)
### 14.迭代器模式(Iterator Pattern)
### 15.组合模式((Composite Pattern))
### 16.观察者模式(Observer Pattern)
### 17.门面模式(Facade Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867102372791.jpg)
### 18.备忘录模式(Memento Pattern)
### 19.访问者模式(Visitor Pattern)
### 20.状态模式(复杂)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867102214418.jpg)
### 21.解释器模式(Interpreter Pattern)(少用)
### 22.享元模式(Flyweight Pattern)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867103663192.jpg)
### 23.桥梁模式(Bridge Pattern)
... ...
## 二、六大设计原则(来源:《您的设计模式》)
* 单一职责原则【Single Responsibility Principle】
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867103548975.jpg)
* 里氏替换原则【Liskov Substitution Principle】
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867103281319.jpg)
* 依赖倒置原则【Dependence Inversion Principle】
* 接口隔离原则【Interface Segregation Principle】
* 迪米特法则【Low Of Demeter】
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867104312110.jpg)
* 开闭原则【Open Close Principle】
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867105390130.jpg)
## 三、《大话设计模式》
通篇是以情景对话的形式,用一个又一个的小故事或者编程示例来组织的。共分为四个部分...
* 第一部分是面向对象的意义和好处以及几个重要的设计原则,通过小菜面试的失败引出;
* 第二部分是详细讲解23个设计模式;
* 第三部分是对设计模式的总结,利用小菜梦想到的超级模式大赛的场景,把所有的面向对象和模式概念都拟人化来趣味总结设计模式之间的异同和关键点;
* 第四部分是附录,主要是针对对面向对象不熟悉者的一个补充,通过一个例子的演变介绍了类、封装、继承、多态、接口、事件等概念。
内容偏多,篇幅有限,先上一份总目录看看大概的内容有哪些...
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867105163744.jpg)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867106417522.jpg)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867106654782.jpg)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867106409181.jpg)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867107558468.jpg)
## 四、面试常问的设计模式
* 请列举出在 JDK 中几个常用的设计模式?
* 什么是设计模式?你是否在你的代码里面使用过任
* Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
* 在 Java 中,什么叫观察者设计模式(observer design pattern
* 使用工厂模式最主要的好处是什么?在哪里使用?
* 举一个用 Java 实现的装饰模式(decorator design pattern) ?它是作用于对象层次还是类层次?
* 在 Java 中,为什么不允许从静态方法中访问非静态变量?
* 设计一个 ATM 机,请说出你的设计思路?
* 在 Java 中,什么时候用重载,什么时候用重写?
* 举例说明什么情况下会更倾向于使用抽象类而不是接口?
* ... ...
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867107644667.jpg)
![image](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867107905431.jpg)
##
## 最后
需要的朋友可以点击:[**戳这里免费领取**](https://gitee.com/vip204888/java-p7)。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
![在这里插入图片描述](http://www.icode9.com/i/li/?n=2&i=images/20210710/1625867108842705.jpg)