zoukankan      html  css  js  c++  java
  • iOS设计模式-原型模式

    | 导语 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

    通过深复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。即原型设计模式。iOS中使用copy协议完成这个过程。

    原型模式主要用于对象的深复制,它的核心是就是类图中的原型类Prototype。

    原型模式的核心思想是把复制的过程封闭到对象的内部完成。第一个好处是修改复制的过程而不影响外部的使用者。

    原型模式的优点及使用场景

    1. 简化对象的创建,把创建的过程封闭到对象的内部。

      在需要重复地创建相似对象时可以考虑使用原型模式。比如需要在一个循环体内创建对象,假如对象创建过程比较复杂或者循环次数很多的话,使用原型模式可以简化创建过程,而且可以使系统的整体性能提高很多。
    2. 由于复制的过程是封闭的,这样就降低了与客户端的耦合,提升了稳定性。

      如果复制的过程对client是完全透明的,那么无疑增加了client的职责,所以一旦对复制的过程进行修改,那么难免对client的稳定性造成影响(client有可能被改出bug)。
    3. 集中创建,便于管理。

      由于创建的过程封闭在对象内部完成,只需修改对象内部一处,所有调用深复制的地方全部生效。

    总结:

    原型模式符合的设计原则:

    1.单一职责原则。client只需关注自己的业务,不用负责复制的过程。

    2.迪米特法则(最少知道原则)。Prototype隐藏复制的过程,减少耦合。且Prototype只需符合copying协议即可,client不用知道Prototype是具体哪个类,这样的好处是便于派生。

    自选股示例:

    数据部分示例很多,这里不摆图列举了。例如,盈亏数据

    CProfitLossSummaryHistoryData。

    如果
  • 相关阅读:
    VueRouter-编程式导航
    VueRouter-路由嵌套
    ubuntu安装qt时编译出现cstddef:50:10: fatal error: 'stddef.h' file not found
    六种常用位操作运算符原理及用途
    C语言编写程序的大小端问题
    linux系统中运行node进程,无法杀死进程
    满足客户的特殊需求,特殊轮播图非常规轮播图
    什么?你还不会通过纯js提交表单?
    什么?你还不会身份证号码验证?最全的身份证正则验证js
    什么!你想要封装好的ajax
  • 原文地址:https://www.cnblogs.com/max5945/p/5718898.html
Copyright © 2011-2022 走看看