1.解析原型设计模式
1)请使用UML类图画出原型模式核心角色
2)写出深拷贝的两种方式的源码(重写clone方法实现深拷贝,使用序列化来实现深拷贝)
3)在Spring框架中哪里使用到原型模型,并对源码进行分析
4)Spring中原型bean的创建,就是原型模式的应用
5) 代码分析+Debug源码
2.解释器设计模式
1) 什么是解析器设计模式
2) 画出解析器设计模式的UML类图,分析设计模式中的各个角色是什么?
3)请说明Spring的框架中,哪里使用到了解释器设计模式,并做源码级别的分析
beans.xml
<bean id="id01" class="com.bean.Monster" scope="Prototype"></bean>
Test.java
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
Object bean = applicationContext.getBean("id01")
System.out.println("bean" +bean)
@Override
public Object getBean(String name) throws BeansException{
return doGetBean(name, null. null, false);
}
#在doGetBean方法中有一个
else if(fmbd.isPrototype()){
Object prorotype = null;
tyr{
beforePrototypeCreation (beanName);
prorotypeInstance = createBean(beanName)
}
finally{
afterPrototypeCreation(beanName)
}
}
设计模式的重要性
- 1)软件工程中,设计模式是对软件设计中普通存在(反复出现)的各种问题,所提出的解决方案。
- 2)大厦 VS 简易房
- 3)拿实际工作经历来说,当一个项目开发完后,如果客户提出增新功能,怎么办?
- 4)如果项目开发完后,原来程序员离职,你接手维护该项目怎么办?(维护性[可读性,规范性])
- 5) 目前程序员门槛越来越高,一线IT公司(大厂),都会问你实际项目中使用过什么设计模式,怎样使用的,解决了什么问题?
- 6)设计模式在软件中哪里?面向对象(oo) 功能模块[设计模式+算法(数据结构)] => 框架[使用到多种设计模式]=》架构[服务器集群]
- 7)如果想成为合格软件工程师,就需要花时间来研究设计模式
设计模式的目的
- 代码重用性(相同功能的代码,不用 多次编写)
- 可读性(编程规范性,便于其他程序员的阅读和理解)
- 可扩展性(当需要增加新的功能,非常的方便,称为可维护性)
- 可靠性(当我们增加新的功能后,对原来的功能没有影响)
- 使程序呈现高内聚、低耦合的特性
设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计的精要"
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)
设计模式常用的七大原则
- 单一职责原则
- 接口隔离原则
- 依赖倒转(倒置)原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
- 合成复用原则