博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂模式
阅读量:5079 次
发布时间:2019-06-12

本文共 901 字,大约阅读时间需要 3 分钟。

什么是工厂模式

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

  • 工厂

    创建其他对象 的对象

    构造方法的抽象

  • 说明

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

转载于:https://www.cnblogs.com/sameen/p/5411005.html

你可能感兴趣的文章
Golang之interface(多态,类型断言)
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>