zoukankan      html  css  js  c++  java
  • 如何创建对象

    (1) object构造函数或对象字面量

            使用同一个接口创建很多对象,会产生大量的重复代码

    (2) 工厂模式

          用函数封装,特定接口创建对象,函数中只有return可以将值暴露 缺点:没有解决如何识别对象类型这一问题

    (3) 构造函数模式

          使用this暴露属性,new创建对象,没有return语句。并且可以将构造函数的实例标识为一种特定的类型,可以使用instanceof识别。

           缺点:每个方法都需要在每个实例上重新创建。

          解决方法:可以将共同的方法创建在全局中,或者使用原型模式

    (4) 原型模式

         每个函数都有一个prototype(原型)的属性,这个属性是一个指针,指向一个对象。该对象可以在prototype属性中定义所有实例共享的属性和方法。

          性质:动态性,在原型中查找值的过程是一次搜索,对原型对象所做的任何修改都能从它的实例中反应出来。

          优点:所有的对象实例共享原型所包含的属性和方法。

          缺点:实例在默认情况下取得相同的属性值 当通过任意一个实例修改原型属性的值时,其他实例对应的属性值也会发生改变。

    (5) 组合使用构造函数模式和原型模式

           构造函数用于定义实例属性,原型模式用于定义方法和共享属性。

    (6) 动态原型模式

           通过检查某个应该存在的方法是否有效,来决定是否初始化原型

    (7) 寄生构造函数模式

           创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后返回新创建的对象。 除了使用new操作符以外,其他和工厂模式相同,特殊情况下为对象创建构造函数。

    (8) 稳妥构造函数模式

          没有公共属性,而且其方法也不引用this的对象

          适用场合:创建对象的实例不引用this;在相对安全的环境(禁止使用this和new)

  • 相关阅读:
    ansible 通过跳板机发布服务
    etcd API 神坑
    golang 条件编译
    服务治理
    golang web服务器处理前端HTTP请求跨域的方法
    rebar使用
    Apache/Tomcat/JBOSS/Jetty/Nginx/WebLogic/WebSphere之间的区别区别
    运维专家写给年轻运维的6条人生忠告
    谷歌浏览器书签索引—知识的海洋都在里面
    关于认识、格局、多维度发展的感触
  • 原文地址:https://www.cnblogs.com/microcosm/p/6505992.html
Copyright © 2011-2022 走看看