美文网首页
设计模式 - 创建型模式

设计模式 - 创建型模式

作者: 陈菲TW | 来源:发表于2020-04-21 15:29 被阅读0次

1. 工厂模式

有些情况下对象的构建并不是简单的调用构造函数,还需要一些逻辑,这种情况下就适用工厂模式。工厂模式解决的问题就是通过封装让调用者不需要关心具体的构造过程,实现调用者与对象构造方法之间的解耦合。用比喻理解工厂模式,在工厂出现之前,做一件衣服需要自己买布、裁剪、缝制;但服装厂出现之后,上述步骤便交给工厂去做。

另外,工厂模式还可以将大量有共同接口的类实例化,工厂模式可以动态决定将哪一个类实例化。例如BeanFactory就是工厂模式;工厂模式通常会有一个类以xxFactory命名。

slf4j的例子:LoggerFactory.getLogger(Abc.class)

2. 单例模式

单例模式解决的问题是传统应用中,每当需要使用对象,则需要构造一个对象,且对象作用域仅限于方法执行期间,因此给GC造成不必要的压力。

单例类自己创建自己的唯一实例,并且向其他对象提供这一实例。把构造函数私有,从而避免其他类调用构造函数创建实例。单例模式的缺点是需要维护大量模版代码,且模版代码与业务代码混在一起。单例分为eager和lazy两种模式如下:

eager lazy

需要注意,lazy单例并非线程安全的,可通过synchronised、volatile等关键字保证线程安全。

3. 建造者模式- builder

如StringBuilder;再比如CustomerBuild.withXX("xx").withYY("yy").build();

Builder接口通常有两个方法:withXX等设置各个属性方法、build/getResult方法用于获取最终组装出来的对象。

4. 原型模式 - prototype

原型模式通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。简言之就是复制粘贴。原型类需要实现Cloneable接口,对于深拷贝还需要重写clone方法。

拷贝分为浅拷贝与深拷贝。浅拷贝只克隆按值传递的数据如基本数据类型、String,不复制对象类型,也就是说本体和拷贝的对象类型的属性仍然指向相同的内存地址,如果修改该对象属性,则本体、拷贝的该属性值都会被改变。

相关文章

  • 23种设计模式总结一

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 一、创建型设计模式 创建型设计模式包括:单...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 创建型设计模式总结

    创建型设计模式总结 Intro 前面几篇文章已经把创建型设计模式都介绍了,来做一个简单的总结。 创建型设计模式,就...

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • 设计模式归纳

    一、设计模式的分类 23 种经典的设计模式分为三类:创建型、结构型、行为型。 1.创建型设计模式主要解决“对象的创...

  • 《设计模式之美》- 23种设计模式

    学习《设计模式之美》笔记。 23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型 创建型模式 创建...

  • 设计模式

    设计模式主要分为三大类型:创建型模式,结构型模式和行为型模式 创建型设计模式是一类处理对象创建的设计模式,通过某种...

  • 设计模式分类

    创建型设计模式 Abstract Factory模式 Builder模式 Factory Method模式[htt...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

网友评论

      本文标题:设计模式 - 创建型模式

      本文链接:https://www.haomeiwen.com/subject/nguuihtx.html