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