• 单例和原型模式-创建型


    单例模式

    确保一个特殊类的实例是独一无二的(它是这个类的唯一实例),并且这个实例易于被访问。

    解决方案

    1)全局变量:一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象。因为你的任何代码都能修改全局变量,这将不可避免的引起更多调试的意外。换句话说,全局变量的状态总是会出现一些问题的。

    2)类构造函数私有和类自身的静态方法:让类自身负责保存它的唯一实例(静态变量)。这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求) ,并且它可以提供一个访问该实例的方法(静态方法)。这就是Singleton模式。(dubbo check 线程安全问题等)

    单件模式可以多个实例

         单件模式并不是说一个类只能只有一个实例。假设我们使用在一个web 请求或者进程里面。一个用户id对应的某个类只能有唯一的实例。我们的User类,可以有多个实例,每个实例对应一个uid. 实例列表注册到map中以uid为key关联起来。

    原型模式

    创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。

    例子1:

    孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来。

    例子2:
    下面是一个邮寄快递的场景:
    “给我寄个快递。”顾客说。
    “寄往什么地方?寄给……?”你问。
    “和上次差不多一样,只是邮寄给另外一个地址,这里是邮寄地址……”顾客一边说一边把写有邮寄地址的纸条给你。
    “好!”你愉快地答应,因为你保存了用户的以前邮寄信息,只要复制这些数据,然后通过简单的修改就可以快速地创建新的快递数据了。

    通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。即原型设计模式。在php的很多模板库,都用到clone。如smarty等。

  • 相关阅读:
    抽象
    数据处理—异常值处理
    数据处理—数据连续属性离散化
    数据处理—缺失值处理
    数据处理—归一化
    数据特征—正态性检验
    数据特征—相关性分析
    数据分析—统计分析
    数据特征—帕累托分析
    特征分析—对比分析
  • 原文地址:https://www.cnblogs.com/wade-luffy/p/5806605.html
Copyright © 2020-2023  润新知