架构师训练营第一期 - 第三周学习总结
面向对象的软件设计的主要目的就是要开发高内聚低耦合的程序,使程序更加健壮易于维护易于扩展易于复用。上周学习的开闭原则、依赖倒置原则、里氏替换原则、单一职责原则、接口隔离原则这几个基本就是来实现这个目的。基于这几个原则又发明了设计模式来更具体的指导我们进行程序开发。
设计模式是用来解决某一种反复出现的问题的通用解决方案,是可重复使用的解决方案。本周课程通过例子讲解了如下一些设计模式:
1.简单工厂模式及简单工厂模式的改进,简单工厂模式非常重要,是其他设计模式的基础,通过配置文件去获得构造实现类的具体变更解决了简单工厂最重要的问题:实现了工厂本身的开闭原则。在开发实践中很多时候都是用这种改进的简单工厂方法进行对象构建,使应用程序和工厂都实现开闭原则。
2.单例模式是一个类只产生一个实例。使用的原因有两个:a1.减少实例频繁创建和销毁带来的资源消耗以提高性能;a2.在程序运行时保证只能有一个用户进行访问处理以进行统一控制。单例模式实现的两种方式:b1.饿汉模式:在类加载时就马上创建唯一的单例对象,不用考虑线程同步的问题,可能会浪费空间,是一种以空间换时间的方法;b2.懒汉模式:在需要的情况下,才创建唯一的实例对象,但是要考虑线程同步的问题,会降低执行效率,是一个以时间换空间的方法。
3.适配器模式是指需要调用某个类已有的功能但却不是调用类定义的接口方法的时候,使用一个适配器类来调用已有功能的方法实现接口并暴露出去给调用类使用。我们熟悉的数据库连接 JDBC driver 实际也是适配器模式,用来适配对应的数据库;另外 JDBC-ODBC Bridge 也是一种适配器模式,将 Windows ODBC 适配到 JDBC 接口中。
在 Junit 的设计模式中讲解了模板方法模式、策略模式、组合模式及装饰器模式。
4.模板方法模式是扩展功能的最基本模式之一,它是通过“继承”的方法来实现扩展,基类负责算法的轮廓和骨架而子类负责算法的具体实现。我们公司自己开发的编程框架也是使用这种模式来设计实现的,框架定义了 init、run 及 stop 三个通用方法及这些方法在业务处理中的调用流程,应用程序继承框架类来重写这些定义好模板函数实现业务逻辑,运行时由框架调用完成业务处理。
5.策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。它是一种“对象的行为模式”,通过“组合”的方法来实现扩展。在系统需要在多种算法中选择一种及条件语句转换成对于策略的多态性调用时使用策略模式。
6.组合模式把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。它是一种“对象的结构模式”。
7.装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。它是一种“对象的结构模式”,是作为现有的类的一个包装,也被笼统地称为“包装器”(Wrapper)。适配器也被称作“包装器”,区别在于适配器是转换成另一个接口,而装饰器是保持接口不变。
在 spring 的设计模式中讲解了依赖注入模式、单例模式、MVC 模式。
8.依赖注入是说一个对象 A 不需要自己去创建自己依赖的对象 B,而是 B 由外部去创建并且注入到 A 里面。在 A 对象中定义 B 对象,通过定义 SET B 对象的方法由外部调用来实现传入对象实例。
9.在 spring 中的 MVC 是通过写一个 controller,通过 requestMapping 指定 controller 处理哪个 URL 及具体的方法,spring MVC 框架会把对应的 URL 请求交给这个指定的方法去处理,同时把这个方法需要的参数从 request 里提取出来传入这个方法执行,然后生成视图返回回去,从而实现了视图和模型的分离。
评论