一、先来解读:23种设计模式要点

1.单例模式(Singleton Pattern)

java 枚举类型的int java枚举类使用场景_设计模式

2.工厂模式

java 枚举类型的int java枚举类使用场景_java 枚举类型的int_02

3.抽象工厂模式(Abstract Factory Pattern)

java 枚举类型的int java枚举类使用场景_java 枚举类型的int_03

4.模板方法模式(Template Method Pattern)

java 枚举类型的int java枚举类使用场景_设计模式_04

5.建造者模式(Builder Pattern)

java 枚举类型的int java枚举类使用场景_设计模式_05

6.代理模式(Proxy Pattern)

java 枚举类型的int java枚举类使用场景_设计模式_06

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)

java 枚举类型的int java枚举类使用场景_面试_07

18.备忘录模式(Memento Pattern)

19.访问者模式(Visitor Pattern)

20.状态模式(复杂)

java 枚举类型的int java枚举类使用场景_经验分享_08

21.解释器模式(Interpreter Pattern)(少用)

22.享元模式(Flyweight Pattern)

java 枚举类型的int java枚举类使用场景_java_09

23.桥梁模式(Bridge Pattern)

… …

二、六大设计原则(来源:《您的设计模式》)

  • 单一职责原则【Single Responsibility Principle】

java 枚举类型的int java枚举类使用场景_经验分享_10

  • 里氏替换原则【Liskov Substitution Principle】

java 枚举类型的int java枚举类使用场景_java_11

  • 依赖倒置原则【Dependence Inversion Principle】
  • 接口隔离原则【Interface Segregation Principle】
  • 迪米特法则【Low Of Demeter】

java 枚举类型的int java枚举类使用场景_java 枚举类型的int_12

  • 开闭原则【Open Close Principle】

java 枚举类型的int java枚举类使用场景_经验分享_13

三、《大话设计模式》

通篇是以情景对话的形式,用一个又一个的小故事或者编程示例来组织的。共分为四个部分…

  • 第一部分是面向对象的意义和好处以及几个重要的设计原则,通过小菜面试的失败引出;
  • 第二部分是详细讲解23个设计模式;
  • 第三部分是对设计模式的总结,利用小菜梦想到的超级模式大赛的场景,把所有的面向对象和模式概念都拟人化来趣味总结设计模式之间的异同和关键点;
  • 第四部分是附录,主要是针对对面向对象不熟悉者的一个补充,通过一个例子的演变介绍了类、封装、继承、多态、接口、事件等概念。

内容偏多,篇幅有限,先上一份总目录看看大概的内容有哪些…

java 枚举类型的int java枚举类使用场景_面试_14

java 枚举类型的int java枚举类使用场景_经验分享_15

java 枚举类型的int java枚举类使用场景_java_16

java 枚举类型的int java枚举类使用场景_设计模式_17

java 枚举类型的int java枚举类使用场景_经验分享_18

四、面试常问的设计模式

  • 请列举出在 JDK 中几个常用的设计模式?
  • 什么是设计模式?你是否在你的代码里面使用过任
  • Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
  • 在 Java 中,什么叫观察者设计模式(observer design pattern
  • 使用工厂模式最主要的好处是什么?在哪里使用?
  • 举一个用 Java 实现的装饰模式(decorator design pattern) ?它是作用于对象层次还是类层次?
  • 在 Java 中,为什么不允许从静态方法中访问非静态变量?
  • 设计一个 ATM 机,请说出你的设计思路?
  • 在 Java 中,什么时候用重载,什么时候用重写?
  • 举例说明什么情况下会更倾向于使用抽象类而不是接口?
  • … …

java 枚举类型的int java枚举类使用场景_设计模式_19

java 枚举类型的int java枚举类使用场景_设计模式_20