设计模式——创建型

什么是创建型模式

创建型模式对类的实例化过程进行了抽象,将软件模块中对象的创建和使用分离。

为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不需要知道其具体的实现细节,使整个系统的设计更加符合单一职责原则

创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。

创建型模式包括以下几种具体的设计模式:

  • 单例模式
    用来创建全局唯一的对象

  • 工厂模式
    用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。

  • 建造者模式
    是用来创建复杂对象,可以通过设置不同的可选参数,“定制化”地创建不同的对象。

  • 原型模式
    针对创建成本比较大的对象,利用对已有对象进行复制的方式进行创建,以达到节省创建时间的目的。

单例模式

工厂模式

建造者模式(build)

建造者模式和工厂模式一样,也是用来创建对象的。

适合使用场景:
1、如果一个类中有很多属性,为了避免构造函数的参数列表过长,影响代码的可读性和易用性,可以考虑使用建造者模式了。
2、如果我们希望创建不可变对象,也就是说,对象在创建好之后,就不能再修改内部的属性值,要实现这个功能,我们就不能在类中暴露 set() 方法。适合使用建造者模式

工厂模式和建造者模式的区别

  • 工厂模式是用来创建多种不同但是有关联的对象(例如继承同一接口)
  • 建造者模式只用来创建一种对象,并且该对象十分复杂。可以通过设置不同的可选参数,“定制化”地创建不同的对象。

原型模式

如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制的方式来创建新对象,以达到节省创建时间的目的。

什么时候创建对象的开销很大?
如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希值),或者需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取

原型模式有两种实现方法:深拷贝和浅拷贝。

  • 浅拷贝只会复制对象中基本数据类型数据和引用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象……
  • 而深拷贝得到的是一份完完全全独立的对象。所以,深拷贝比起浅拷贝来说,更加耗时,更加耗内存空
    间。

如果要拷贝的对象是不可变对象,浅拷贝共享不可变对象是没问题的,但对于可变对象来说,浅拷贝得到的对象和原始对象会共享部分数据,就有可能出现数据被修改的风险,此时推荐深拷贝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值