设计模式-原型模式

导览:开篇(23种设计模式)面向对象设计的6大原则

创建型结构型行为型
工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>
抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>
建造者(Builder)<对象>组合(Composite)<对象>责任链(Chain of Responsibility)<对象>
原型(Prototype)<对象>装饰者(Decorator)<对象>命令(Command)<对象>
单例(Singleton)<对象>外观(Facade)<对象>迭代器(Iterator)<对象>
享元(Flyweight)<对象>中介者(Mediator)<对象>
代理(Proxy)<对象>备忘录(Memento)<对象>
观察者(Observer)<对象>
状态(State)<对象>
策略(Strategy)<对象>
访问者(Visitor)<对象>

原型模式

模式描述

在这里插入图片描述
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Prototype(原型)定义一个Clone自身的接口,ConcretePrototype实现实际的Clone接口来返回自身的拷贝对象。这种拷贝对象的方式和直接new一个对象最大的区别在于能够较快地将对象当前的状态一起拷贝。

优缺点

优点:

  • 可以在运行时刻增加和删除产品,只需要注册原型实例就可以将一个新的具体产品类并入系统
  • 可以减少子类的构造,工厂方法经常产生一个与产品类层次平行的Creator类,原型模式则不需要
  • 改变原型对象的值或结构来指定新的对象,例如修改一个拷贝的原型对象的状态再注册为一个新的原型,以此减少类的数量

缺点:

  • 当需要动态创建或销毁原型时,需要一个原型管理器
  • 原型的对象拷贝需要深拷贝,实现上会比较麻烦

适用场景

  • 当一个系统应该独立于它的产品创建、构成和表示时。例如一个通用图形系统是框架性的定义,不没有限制具体的应用方向,可以是音乐软件或者是数学图形软件,对应的产品就可以使用原型模式。
  • 当要实例化的类是在运行时刻指定时。例如画图软件上添加了一个基础的圆形之后进行了修改,此时要复制修改后的圆形。
  • 避免创建一个与产品类层次平行的工厂类层次时
  • 当一个类的实例只能有几个不同状态组合中的一种时。例如一个电路设计软件,开关只能有开或关中的一种状态。

相关模式

原型(Prototype)模式和抽象工厂(AbstractFactory)模式在某种方面是相互竞争的。但是它们也可以一起使用:抽象工厂可以存储一个被克隆的原型的集合,并且返回产品对象。
大量使用组合(Composite)模式和装饰者(Decorator)模式的设计通常也可从Prototype模式处获益。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值