温故知新-设计模式篇

简介: 温故知新-设计模式篇

01 Mind Map

02 Question&Answer

Q1: 什么是反射、它的作用是什么?

A: 运行时,动态获取这个类的信息。作用是访问对象的属性、方法、构造函数。


Q2: 反射应用场景?

A: JDBC驱动加载、SpringIOC、框架等。


Q3: 反射获取类的方式以及创建对象的方式?

A: 3种方式,创建对象:clazz.newInstance()。


Q4: 如何禁止反射?

A: 将构造函数私有化。


Q5: 类加载机制原理,以及各个流程做的事情?

A:

加载(数据结构放到方法区,生成Class对象) ->

校验(基于字节流(文件校验)、基于数据结构(方法区里的对象结构))->

准备(分配内存、初始化变量)->

解析 (符号引用转为直接引用)->

初始化(new 的方式或者反射,会找到main入口开始执行


Q6: 为什么加载MySQL驱动,必须先声Class.forName(“com.mysql.driver…”)?

A: 因为驱动是没有加载进去的,需要Class.forName()去加载class对象到内存,而Driver驱动类里面有个静态代码块,直接new Driver()了,把对象加载载进去到内存。


Q7: 设计模式的六大原则?

A: 「开闭原则」、「里式替换原则」(基类出现,子类一定可以出现)、「依赖倒置原则」(面向接口编程)、「接口隔离原则」、「迪米特原则」(减少实体间的交互)、「合成复用原则」(尽可能使用聚合,而不是继承)。


Q8: 单例模式的应用场景?


Q9: 单例模式的5种创建方式,以及优缺点分析?

A: 「饿汉式」、「懒汉式」、「双重锁检测」、「静态内部类」、「枚举方式」。优缺点从是否需要懒加载考虑。


Q10: 单例模式如何防止反射漏洞攻击?

A: 加个flag,只允许初始化一次,构造函数里判断。


Q11: 单例模式如何防止反射漏洞攻击?

A: 加个flag,只允许初始化一次,构造函数里判断。


Q12: 工厂模式的3中分类,以及各自的优缺点?

A: 『简单工厂模式』、(缺点高内聚、所有职责一个类处理)『工厂方法模式』(由具体的工厂子类去创建)、『抽象工厂』(工厂的工厂,再细分)。


Q13: 代理模式的概念以及3种分类?

A: 静态代理、动态代理(JDK代理)、Cglib字节码操作库。


Q14: Spring中使用那种代理模式?

A: 动态代理(JDK代理)、Cglib字节码操作库(自动转换,看是否有实现接口)。


Q15: 建造者模式的应用场景?

A: 创建游戏人物,按顺序创建肢体。


Q16: 模板方法模式以及实际应用场景?

A: 父类约定规则,子类具体实现,如银行转账案例(基类)。


Q17: 适配器模式举例?

A: 110V电源与220V电源的适配、不同数据库之间的同步等。


Q18: 外观模式举例?

A: 群发信息。


Q19: 原型模式举例?

A: 深复制与浅复制。


Q20: 装饰模式举例?

A: 房子装修、文件流。


Q21: 策略模式举例?

A: 会员案例、以及AudioPlayer的实际场景。


Q22: 观察者模式举例?

A: 。。。

目录
相关文章
|
6月前
|
设计模式 存储 算法
设计模式学习心得之五种创建者模式(2)
设计模式学习心得之五种创建者模式(2)
53 2
|
6月前
|
设计模式 安全 Java
设计模式学习心得之五种创建者模式(1)
设计模式学习心得之五种创建者模式(1)
44 0
|
7月前
|
设计模式 自动驾驶 NoSQL
设计模式心法
设计模式心法
|
设计模式 存储 消息中间件
设计模式之美(二)——设计模式
《设计模式之美》是极客时间上的一个代码学习系列,在学习之后特在此做记录和总结。
设计模式之美(二)——设计模式
|
设计模式 SQL Java
设计模式之为什么要学好设计模式
设计模式之为什么要学好设计模式
57 1
|
设计模式 自然语言处理 Java
重新学习设计模式一:什么是设计模式
一直以来,设计模式是一个令人头疼的课题,记得之前在A公司做智能客服项目时,刚开始只是一个小项目,不管什么设计模式,系统架构,全程直接上手敲业务代码,两三天时间就把所有的代码敲完上线使用,结果谁也没想到突然项目大起来了,十几个业务部门的业务一拥而上,开始招人,上手业务,结果。。。大家都是苦力干嘛,拼命加班,拼命填坑,十几个人的代码乱七八糟,大量重复业务,重复代码,单简单的一样表单业务查询就有三四不同的版本,新来的员工也在抱怨没学到任何技术,倒学会怎么跟业务吵架,那日子实在是不忍直视。。。
107 0
|
设计模式 存储 缓存
常见的设计模式要会
《架构基础》
114 0
|
设计模式 JSON 前端开发
重学设计模式——你真的面向对象了吗?
重学设计模式——你真的面向对象了吗?
814 3
重学设计模式——你真的面向对象了吗?
|
设计模式 算法 前端开发
什么是设计模式?程序员如何学好设计模式?
许多前辈程序员经过长期实践,总结出了一系列的解决方案。这些解决方案可以提高代码的可读性,增加代码的可重用性,保证代码的可扩展性。 这一系列解决方案,被人们称为设计模式,它是面向对象编程当中的各种经典套路。 设计模式是一种抽象的编程思想,并不局限于某一特定的编程语言,而是在许多语言之间相通的。比如在Java、C#、C++语言当中,都可以使用到设计模式。
408 1
|
设计模式 Dubbo Java
结构型设计模式在公司项目中的运用实践
结构型设计模式在公司项目中的运用实践