zoukankan      html  css  js  c++  java
  • Prototype(原型模式)

    介绍

    在面向对象编程中,对象之间相互交流共同完成工作。但有时候,创建一个重量级对象成本较高(如通过网络,I/O,数据库操作才能完成创建的对象),而你的应用还需要大量的这种对象(它们都包含几乎相似的属性),那么这就隐含着一个性能问题。

    让我们考虑这样一个场景:一个应用需要某些访问控制。不同类型的用户具有不同的权限来使用程序的特性。例如,某些用户可以生成报表,而某些就不行。甚至一些用户可以修改报表,而另一些只能阅读它们。有些用户拥有管理其它用户的权限。

    每个用户都有一个自己的访问控制对象,用于对该应用的访问控制。该访问控制对象比较重量级,创建的成本很高,需要读取本地及网络资源,数据库等。

    我们不能将访问控制对象在用户之间共享,因为在运行时,每个用户的权限可能会更改,而且相同级别的用户可能拥有不同的访问控制权限,用户与访问控制对象之间是一一对应的关系。

    我们可以使用原型模式来解决我们的问题,我们一次性创建好所有级别的访问控制对象,然后每次给用户提供对应的拷贝对象,对象的拷贝毕竟比这些对象的创建要轻量的多,因此,这样可以提高系统的性能,因为资源的读取只有一次。

    什么是原型模式

    原型模式用于特定类型的对象,使用一个原型实例,通过复制这个原型来创建新的对象。

    现有的对象作为原型,通过复制它的状态来创建实例,这样可以节省资源。

  • 相关阅读:
    Apache Kylin v3.0.0-alpha 发布
    Apache Kylin在美团点评的应用
    Kylin 架构模块简介
    Kylin 1 背景、历史与使命
    谈MongoDB的应用场景
    Linux 内存Cache和Buffer理解
    Linux 下查看内存使用情况方法总结
    mongodb 集群配置文件
    MongoDB bindIp 与 bindIpAll
    MongoDB 权限认证
  • 原文地址:https://www.cnblogs.com/xiaojintao/p/6358561.html
Copyright © 2011-2022 走看看