架构师训练营第三周总结

用户头像
xs-geek
关注
发布于: 2020 年 10 月 04 日

设计模式

一种可重复使用的解决方案,每一种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中,不停的出现。

分类

创建模式 - 对类的实例化过程的抽象

工厂模式

适合创建复杂对象,满足OCP

简单工厂(对Factory未实现OCP)-> 反射(类型安全问题,仍然知道具体实现,限制只能通过默认构造函数创建) -> 配置文件+默认实现(类型安全问题,限制只能通过默认构造函数创建)

单例模式

保证产生单一实例,两个原因:性能需求,功能需求

一定要有私有的构造函数,保证只能通过getInstance()方法获得

尽量将单例模式设计为无状态对象(只提供服务,不保存状态)

饿汉式 - 尽量使用

懒汉式 - 需要加锁

容器实现(HashMap) - Spring

结构模式 - 将类或者对象结合在一起形成更大的结构

适配器模式

系统需要使用现有的类,而这个类的接口与我们所需要的不同

应用: JDBC Driver、JDBC-ODBC Bridge

组合模式

树形结构

装饰器模式

在不改变客户端接口的前提下,扩展现有对象的功能

适配器是转换成另一个接口,而装饰器是保持接口不变

优点:

保持对象功能不变,扩展其外围功能

缺点:

可以自由组合带来更多复杂度,可能组合出荒谬的结果

应用:Servlet(XXXRequest、XXXRequestWrapper)、Collections.sychronizedList(list)、IO流(InputStream、OutputStream、Reader、Writer)

行为模式 - 对在不同的对象之间划分责任和算法的抽象化

模板模式

扩展功能的最基本模式之一,通过继承的方法实现扩展

形式:

  • 抽象方法:强制子类覆盖

  • 具体方法:选择性覆盖,有方法实现,可以选择不可覆盖final

  • 钩子方法:选择性覆盖,空方法实现

策略模式

扩展功能的最基本模式之一,通过组合的方法实现扩展

  • 系统需要在多种算法中选择一种

  • 重构系统时,将条件语句转换成对于策略的多态性调用

优点:

  • 使用策略的人与具体实现分离

  • 策略对象可以自由组合

缺点:不关心何时使用何种算法,这个必须由客户端决定

发布于: 2020 年 10 月 04 日 阅读数: 17
用户头像

xs-geek

关注

还未添加个人签名 2018.04.22 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周总结