GoF23设计模式
原地打转㐅
勤思、体悟、总结、分享
展开
-
GoF23--单例模式的三种常见写法
简介 保证一个类只有一个实例(构造器私有化),并且提供一个访问该实例的全局访问点(静态公有方法返回实例对象)。 单例模式只生成一个实例,减少了系统的性能开销,提高效率。 三种常见写法 饿汉式 在类加载的时候,就完成初始化,线程安全,不具备延迟加载特性。 public class SingletonHungry { //类加载时就已经初始化,虚拟机只装载一次此对象 priva...原创 2019-05-29 22:47:23 · 133 阅读 · 0 评论 -
GoF23--工厂模式之简单工厂
特性介绍 将对象实例化的过程放在工厂类中,实现创建者和调用者的分离。 可以用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码)。 简单工厂模式没有遵循开闭原则,但也使用较多。 示例说明 场景描述 以汽车工厂为例 调用关系图 示例代码 /** * 汽车类接口 */ public interface Car { /** * 汽车运行方法 ...原创 2019-05-29 22:48:12 · 86 阅读 · 0 评论 -
GoF23--工厂模式之工厂方法
特性介绍 将对象实例化的过程放在工厂类中,实现创建者和调用者的分离。 符合开闭原则,扩展新的类只需要创建新的工厂并实现工厂接口,不需要修改已有的代码。 缺点是产生的文件量较多,在大型项目中可以考虑使用。 示例说明 场景描述 模拟奥迪车和比亚迪车的生产销售过程。 调用关系图 示例代码 (为了方便展示,未使用标准注释) //汽车接口,定义汽车的功能 public interface Car {...原创 2019-05-29 22:48:51 · 117 阅读 · 0 评论 -
GoF23--工厂模式之抽象工厂
特性介绍 将对象实例化的过程放在工厂类中,实现创建者和调用者的分离。 用来生产不同产品族的全部产品(支持增加产品族,不支持增加新的产品)。 抽象工厂模式是工厂方法模式的升级版,在有多个业务分类时,通过抽象工厂模式产生需要的实例对象是比较好的解决方式。 示例说明 场景描述 以汽车生产为例,将汽车组件模拟拆分为发动机、轮胎和座椅三个部分,这三个部分组成一个产品族(即汽车为产品族),发动机、轮胎和座...原创 2019-05-29 22:49:34 · 138 阅读 · 0 评论 -
GoF23--建造者模式
特性介绍 适合构建复杂对象。 分离了对象子组件的单独构造和装配,实现了构建和装配的解耦。 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。 示例说明 场景描述 以电脑的生产装配过程为例,假设一个电脑由显卡、主板和机箱组成,电脑的组件建造和装配由不同的接口控制,具体的实现类负责实际操作。 调用关系图 示例代码 1.新建电脑类和电脑的三...原创 2019-05-29 22:50:12 · 151 阅读 · 0 评论 -
GoF23--原型模式
特性介绍 通过 new 产生一个对象需要非常繁琐的数据准备或权限时,可以直接克隆对象 原型模式(prototype)。 克隆不同于new,克隆出的对象属性值与原对象完全相同。 克隆出的新对象不会影响原型对象,可修改克隆对象的值。 原型模式需要实现Cloneable接口并重写Object中的clone方法。 示例说明 场景描述 以克隆羊为例,对比输出原型和克隆对象的地址与值的差异...原创 2019-05-29 22:50:51 · 175 阅读 · 0 评论 -
GoF23--适配器模式
特性介绍 从程序的结构上实现松耦合,从而可以扩大整体的类结构用来解决后续问题。 将一个类的接口转换成另一个需要的接口,能够解决因接口不兼容而导致类不能一起使用的问题。 常用于旧系统的升级与改造。 适配器模式例子:IO流处理。 示例说明 场景描述 一个新的客户端,想要调用以前一个类的方法,但是发现以前的接口不符合使用要求或者已经找不到了,那么就可以通过适配器模式进行处理。 调用关系 类适配器方...原创 2019-05-29 22:51:27 · 172 阅读 · 0 评论