【Design pattern】设计模式系列(十二)模板模式
[Design pattern]: 设计模式相关系列
介绍
概念: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
应用场景: 由模板定义统一的公共逻辑,公共入口,子类定义不同的实现.好处:统一了公共部分,父类(模板)控制了子类的流程,子类只能定义规定内的逻辑.
【Design pattern】设计模式系列(十二)模板模式
[Design pattern]: 设计模式相关系列
概念: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
应用场景: 由模板定义统一的公共逻辑,公共入口,子类定义不同的实现.好处:统一了公共部分,父类(模板)控制了子类的流程,子类只能定义规定内的逻辑.
【Design pattern】设计模式系列(十一)享元模式
[Design pattern]: 设计模式相关系列
概念: 运用共享技术有效地支持大量细粒度的对象。
应用场景: 项目中某个类需要产生大量的对象,其中对象中的属性创建占用了大量的内存,如果这些属性对象可以被公用,那么可以利用享元模式把他们指向同一个地址.
这让我想起了字符串常量池的做法.
那么我们就用例子模仿一个字符串存储的逻辑.
自创字符串类
1 | package note.com.flyweight; |
[Design pattern]: 设计模式相关系列
意图: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。
使用场景: 当一个接口中有多个方法定义,它的方法有多种有不同的实现,为了避免在子类中重复的定义相同的方法.
剥离功能1接口
1 | package note.com.bridge; |
[Design pattern]: 设计模式相关系列
意图: 动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。
使用场景: 处理规则可以任意组装的时候
结构图:
过滤功能接口
1 | package note.com.decorator; |
[Design pattern]: 设计模式相关系列
意图: 将对象组合成树形结构以表示“部分 -整体”的层次结构。 C o m p o s i t e使得用户对单个对象和组合对象的使用具有一致性。
适用性: 1,你想表示对象的部分 -整体层次结构。 2,你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
应用场景 :树形结构,从树顶控制整个树的操作.
政府接口
1 | package note.com.composite; |
【Design pattern】设计模式系列(七)适配器模式
[Design pattern]: 设计模式相关系列
意图: 将一个类的接口转换成客户希望的另外一个接口。 A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
别名: 包装器 Wrapper
动机: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。
应用场景: 需要使用到老的类,但是不符合新接口规则的时候,就是适配器出场的时候了
老的类
1 | package note.com.adapter; |
[Design pattern]: 设计模式相关系列
概念: 为其他对象提供一种代理以控制对这个对象的访问。
使用场景: 增加一个对象操作的访问控制,如根据权限判断用户是否能执行某个方法. 另一个应用是延迟加载,比如图片的对象,直到真正改变图片文件时才真正加载.
真正的执行对象
1 | package note.com.proxy; |
[Design pattern]: 设计模式相关系列
概念: 为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
理解: 某个子系统有很多很多的功能,包括一些很底层的操作,但是对于调用这个子系统的用户来说很少去操作底层的操作,那么用户希望有一个特别简单的入口就可以使用这个子系统的大部分操作,而不是调用各种类. 那么我们就给这个子系统加一个外观类吧
使用场景: JDBC对于不同的数据库访问提供了相同的入口.
好处: 简化了用户使用,并且子系统发生改变用户不需要知道(例如JDBC,为QUERY做一个外观类).
[Design pattern]: 设计模式相关系列
概念: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
使用场景: 整个项目中只能创建一次对象的类.防止出现多个对象同时存在.如:数据库连接池,有多个就不能有效控制连接数了.
单例类
1 | package note.com.singleton; |
【Design pattern】设计模式系列(三)生成器模式
[Design pattern]: 设计模式相关系列
概念: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
例如: 衣服制造厂(实体)有制造衣服的功能,每种衣服的制造流程都不相同,因此把制造衣服这个复杂且可变的功能分离出来.
使用场景: 实体的某个功能复杂且不只有一种
好处: 功能的扩展不影响实体,实体更加内聚,与可变的部分耦合度低
生产过程接口
1 | package note.com.builder; |