C++设计模式之原型模式(三)
来源:互联网 发布:纪录片推荐 知乎 编辑:程序博客网 时间:2024/06/05 19:47
3、原型模式总结
1.主要优点
原型模式的主要优点如下:
(1) 当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。
(2) 扩展性较好,由于在原型模式中提供了抽象原型类,在客户端可以针对抽象原型类进行编程,而将具体原型类写在配置文件中,增加或减少产品类对原有系统都没有任何影响,符合“开放封闭原则”
(3) 添加一个原型管理器,抽象原型类和原型管理器类是一种依赖关系,通过类似组合的方式来实现对原型类的复用,符合"多用组合,少用继承原则"。
(4) 原型模式封装了对象的创建过程,对客户端隐藏了对象创建的具体细节。
2.主要缺点
原型模式的主要缺点如下:
(1) 原型类除了业务逻辑外,还存在一个Clone方法,用于克隆自己。一个类存在两种职责,导致类的职责过重,违背"单一原则"。
3.原型模式具体应用
(1)通常软件开发过程中编写的周报告、月报告、可行性分析报告、软件需求规格说明书、项目进展报告等,都各有一份原型模板,只需要根据这原型模板就可以编写出多份报告。
(2)在使用手机过程中,经常会收到天气预报,商品促销活动等短信。这些短信都有一份原型,只需要根据原型进行修改,就可以生成多条短信,然后发送给手机用户。
(3)假定我们要开发一个调色板,用户单击调色板上任一个方块,将会返回一个对应的颜色的实例,这些不同的颜色就是一个原型对象。单击调色板上的任一个方块,将在调色板管理器中找到该颜色对应的原型对象,然后克隆一个该原型对象并返回。
(4)现在很多音乐播放器,其界面设计风格大同小异。可以这么认为,某款音乐播放器是以另一款音乐播放器的界面为参考原型,设计一个新的播放器。
(5)在游戏行业中,只要出了一款新游戏。很多游戏公司就以这款游戏为参考原型,设计出一款差不多的新游戏,导致该类型的游戏多种多样。网上随便搜索射击类,赛车类等游戏,基本上都是类似的。
(6)在OCR识别行业,只要有一家公司做出文档识别,银行卡识别项目抢占了市场,尝尽了甜头。紧接着一大批OCR公司会以这些成功的产品为原型,开发出类似的文档识别、银行卡识别项目,在市场上占一席之地。
(7)上海通用需要为自己的汽车产品定制导航功能,可以和高德地图合作,为该导航定制一份原型。需要量产的时候,只需要把这原型安装到各车辆上。
(8)自从微软推出Office办公软件之后,好些公司仿造Office,制作出一些新的办公软件。如WPS。
(9)我们网上购物的时候,会让我们填写邮寄姓名和地址,我们不需要再次输入姓名和邮寄地址,可以选择之前保存的信息。同样的,在12306购买火车票的时候,也可以从联系人列表中选择需要乘车的客人。这些都是原型模式的应用。
(10)在软件开发过程中,也可以为需要开发的软件制定一个原型,之后可以根据这个原型进行迭代开发。
(11)生活中也有原型模式的例子:配置一把和现在一模一样的钥匙;山寨一款产品(例如山寨IPHONE);欣赏某栋别墅的设计风格,自己仿照这栋别墅的设计风格,设计出一栋一模一样的别墅;当你想要为自己的手机定制一块电池的时候,拿着原装电池去手机店就可以了;模具工厂根据需要生产的模具原型,批量生产该类型模具;小时候老师布置作业,要求我们把文章抄写10遍,不爱学习的我抄写一遍之后就使用复印纸了;京剧各种角色的变化;细胞分裂;克隆技术等。
- 四、设计模式之三-----原型模式
- 设计模式之(三)--原型模式(prototype)
- 设计模式之三 原型模式(Prototype)
- C++设计模式之原型模式(三)
- 设计模式之原型模式(C++)
- C#--设计模式之原型模式
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- 23. C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- 4、C语言和设计模式(之原型模式)
- 三、原型设计模式
- 设计模式三:原型模式
- 设计模式(三)-原型模式
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- poj1990(树状数组好题)
- 深度探索C++对象模型---Member Function的各种调用方式
- ant实现java项目的自动构建和部署
- Android内存泄露方案管理
- 搜* 索*引*擎
- C++设计模式之原型模式(三)
- 确保对象的唯一性——单例模式
- Servlet实现网络IP过滤
- 【网络编程】UDP/TCP 数据包的大小限制
- OC之 NSMutableString, NSNumber, NSMutableNumber, NSArray
- 多校第六场 HDU 4927 JAVA大数类+模拟
- DButils工具类可以用来获取数据库连接向数据库插入更新删除对象2
- android studio最常用、最好用的快捷键
- 1003:Hangover