欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深入探讨对象创建型模式:原型3.4详解

时间:11-16 现代故事 提交错误

大家好,关于深入探讨对象创建型模式:原型3.4详解很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

我们假设框架为注释和五线谱等图形组件提供了一个抽象Graphics 类。此外,还提供了抽象类Tool 来定义调色板中的这些工具。该框架还为创建图形对象实例并将其添加到文档的工具预定义了GraphicTool 子类。

但GraphicTool给框架设计者带来了一个问题。注释和五线谱的类特定于我们的应用程序,而GraphicTool 类属于框架。 GraphicTool 不知道如何创建音乐类的实例并将它们添加到乐谱中。我们可以为每个音乐对象设置不同的类别。我们知道对象组合是比创建子类更灵活的选择。问题是,框架如何使用它来参数化GraphicTool 实例,而这些实例是由Graphic 类支持创建的。

解决方案是让GraphicTool 通过复制或克隆Graphic 子类的实例来创建新的Graphic。我们称这个实例为原型。 GraphicTool 将其应克隆并添加到文档中的原型作为参数。如果所有的Graphic子类都支持Clone操作,那么GraphicTool就可以克隆所有类型的Graphic,如下图所示:

图片.png

因此,在我们的音乐编辑器中,用于创建音乐对象的每个工具都是使用不同原型初始化的GraphicTool 实例。通过克隆音乐对象原型并将此克隆添加到乐谱中,每个GraphicTool 实例将生成一个音乐对象。

我们甚至可以进一步使用Prototype模式来减少类的数量。我们使用不同的类来表示全音符和半音符,但我们可能不需要这样做。它们可以是使用不同位图和延迟初始化的同一类的实例。用于创建整个音符的工具是GraphicTool,其原型是一个初始化为整个音符的MusicalNote。这大大减少了系统类型的数量,并使向音乐编辑器添加新音符变得更加容易。

3 适用性

当系统的创建、组合和表示独立于其产品时,请使用原型模式

- 当要实例化的类在运行时指定时,例如通过动态加载

- 避免创建与产品层次结构并行的工厂类层次结构

- 当类的实例只能具有几种不同状态组合之一时,创建相应数量的原型并克隆它可能比每次手动实例化具有适当状态的类更方便。

4 结构

image.png

5 参与者

- 原型(图形) —— 声明一个克隆自身的接口

- ConcretePrototype (Staff, WholeNote, HalfNote) —— 实现了克隆自身的操作

- 客户端(GraphicTool) —— 允许原型克隆自身以创建新对象

6 协作

客户端请求原型克隆自身

7 效果

- 1.运行时添加和删除产品;

- 2.更改值以指定新对象;

- 3.更改结构以指定新对象;

- 4.减少子类的结构;

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

用户评论

素衣青丝

好专业的名字,"对象创建型模式"听起来很学术!

    有12位网友表示赞同!

夏以乔木

终于看懂了什么是原型模式,之前一直不太清楚。

    有6位网友表示赞同!

泪湿青衫

学下这个Prototype,说不定以后开发里能用到呢!

    有9位网友表示赞同!

若他只爱我。

原型的概念对我来说还挺新奇的,需要好好琢磨一下。

    有20位网友表示赞同!

红尘滚滚

这篇文章讲的好详细,让我对原型模式有了更清晰的理解。

    有6位网友表示赞同!

哭花了素颜

3.4版本的内容是不是会跟之前有很大区别?

    有7位网友表示赞同!

如你所愿

Prototype模式在实际项目中应用场景很多吗?

    有15位网友表示赞同!

掉眼泪

这个Prototype能解决什么问题?比较好奇它的作用吧!

    有16位网友表示赞同!

景忧丶枫涩帘淞幕雨

看了这篇文章,感觉原型模式还是很实用的。

    有5位网友表示赞同!

颓废人士

之前没听说过原型模式,现在终于了解了!

    有9位网友表示赞同!

羁绊你

学习一下Protoytpe,以后可以写更高级的代码了!

    有16位网友表示赞同!

漫长の人生

对这个标题很有兴趣,我想知道里面具体讲啥内容。

    有16位网友表示赞同!

堕落爱人!

Prototype 的应用场景挺广泛的吗?

    有6位网友表示赞同!

一样剩余

这种类型的文章看多了就会感觉越来越专业了!

    有8位网友表示赞同!

采姑娘的小蘑菇

感觉Prototype模式可以用在很多不同的开发领域中。

    有9位网友表示赞同!

有你,很幸福

学习Protoytpe需要掌握哪些基础知识呢?

    有11位网友表示赞同!

算了吧

这个“原型”的概念理解起来有些难度,希望文章能更直观一些。

    有12位网友表示赞同!

孤岛晴空

看标题就知道了,这篇文章肯定要讲怎么创建对象吧!

    有19位网友表示赞同!

歇火

期待能够从这篇3.4 PROTOTYPE(原型) — 对象创建型模式 中了解更多知识!

    有18位网友表示赞同!

我怕疼别碰我伤口

对于对开发不熟悉的人来说,这个名字听起来还是很神秘的!

    有19位网友表示赞同!

【深入探讨对象创建型模式:原型3.4详解】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活