• 工厂模式


    什么是工厂模式

    定义一个 用于创建对象 的接口。(但是让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。)

    • 工厂
      创建其他对象 的对象

      构造方法的抽象

    • 说明
      1.这个接口 由子类决定 实例化哪一个类。所创建的 实例类型 由所属实例 指定,因此不知道具体类的情况下,为客户提供一种创建对象的接口

    2.子类 可以重写 接口方法 以便创建的时候 指定 自己的对象类型

    用来干啥

    用来定义接口的

    • 定义什么接口?
      定义 创建对象的 接口。

    这种模式 抽象了 创建对象的过程。

    首先,ECMAScript中无法创建类,so,有人发明一种函数,用来封装 以特定接口创建对象 的细节。

    栗子:

    function createPerson(name, age, job){
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function(){
            console.log(this.name);
        }
        return o;
    }
    
    
    var person1 = createPerson('Amy', 18, "Software Engineer");
    var person2 = createPerson('Bob', 21, "Doctor");
    
    

    函数createPerson()能够 根据接受的参数 来构建一个包含所有必要信息的Person对象。

    • 什么时候使用工厂模式,以下几种情景下工厂模式特别有用:
      .对象的构建十分复杂
      .需要依赖具体环境创建不同实例
      .处理大量具有相同属性的小对象

    优缺点

    缺点:
    1、重构已经存在的类会破坏客户端代码。

    2、因为工厂方法所实例化的类具有私有的构造方法,所以这些类就不能扩展了。

    3、如果确实扩展了工厂方法所实例化的类(例如将构造方法设为保护的,虽然有风险但也是可行的),子类必须具有所有工厂方法的一套实现。

  • 相关阅读:
    JS完整获取IE浏览器信息
    C# DataSet和DataTable详解
    linux下mysql导入数据
    Linux上安装mysql
    JDK6+tomcat7+mysql官网下载地址
    Linux常用命令
    mysql 授权
    tomcat7.0学习笔记
    struts2 <s:property/>标签的使用输出时间格式转换
    Linux如何查找软件安装路径?
  • 原文地址:https://www.cnblogs.com/sameen/p/5411005.html
Copyright © 2020-2023  润新知