设计模式之创建型模式

简介

本文章旨在记录学习设计模式的过程,学习内容主要来自菜鸟教程,网址:设计模式,学习代码整理在:代码仓

五种创建型模式

工厂模式(Factory Pattern)

  • 使用场景:需要在不同条件下创建不同实例时
  • 主要思想:定义创建对象的接口,使其创建过程延迟到子类进行
  • 代码示例:在代码仓中包名design.pattern.factory

抽象工厂模式(Abstract Factory Pattern)

  • 使用场景:需要提供一个创建一系列相关或相互依赖对象的接口
  • 主要思想:类似于比工厂模式多一层,通过不同条件创建不同的工厂,不同的工厂负责创建对应的系列产品
  • 代码示例:在代码仓中包名design.pattern.abs.factory
  • 个人理解:比如我很有钱,我要开两家店:店A卖衣服、店B卖零食;那么店A和店B都属于商店,就是我创建的两个工厂对象;而店A只卖衣服,它卖出的衣服就是工厂A所创建的对象;店B只卖零食,它卖出的零食就是工厂B所创建的对象。

单例模式(Singleton Pattern)

  • 使用场景:一个全局使用的类频繁地创建与销毁
  • 主要思想:判断系统中是否已经有这个单例,如果没有,就创建一个
  • 代码示例:在代码仓中包名design.pattern.singleton
  • 个人理解:比如全世界只有一个地球,我们向地球请求什么服务(氧气等)时,需要通过地球这个单例来实现
  • 实现方式:
    1. 懒汉式,不加锁,不支持多线程,在代码仓中包名design.pattern.singleton.lazy
    2. 懒汉式,加锁,支持多线程,但效率较低,在代码仓中包名design.pattern.singleton.secure
    3. 饿汉式,不加锁,支持多线程,但有可能在很早就初始化,导致资源的浪费,在代码仓中包名design.pattern.singleton.hungry
    4. 双重锁/双重校验锁,加锁,支持多线程,且只会在第一次调用时初始化,在代码仓中包名design.pattern.singleton.dcl
    5. 登记式/静态内部类,不加锁,支持多线程,且只会在第一次调用时初始化,在代码仓中包名design.pattern.singleton.register

建造者模式(Builder Pattern)

  • 使用场景:在软件系统中,一个复杂对象的创建工作,它通常由各个部分的子对象用一定的算法构成;子对象可能会改变,但组合方式一般不变
  • 主要思想:将变化的子对象和不变的组合方式分离开来
  • 代码示例:在代码仓中包名design.pattern.builder
  • 个人理解:教程中示例简单易懂,请移步教程

原型模式(Prototype Pattern)

  • 使用场景:类初始化需要消耗非常多的资源;通过new产生一个对象需要繁琐的数据准备或访问权限;一个对象需要给其他对象访问,而且各个调用者可能都需要修改其值时
  • 主要思想:通过clone一个对象优化创建过程
  • 代码示例:在代码苍中包名design.pattern.prototype
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值