抽象工厂模式笔记
   1.抽象工厂模式创建多个抽象类,创建出的结果是一个类簇(这里是抽象类的集合)
   2.抽象工厂中传入的父类是否是抽象工厂方法创建的抽象类进行判断,不是则抛出错误
   3.子类通过抽象工厂方法(寄生式继承)继承父类(抽象工厂创建的抽象类)的属性和方法
 原型式继承

1             function inheritobject(o){
2                 //声明一个过渡函数对象
3                 function F(){
4                 }
5                 //过渡原型对象继承父对象
6                 F.prototype=o;
7                 //返回过渡对象的一个实列,该实例的原型继承了父对象
8                 return new F();
9             }

寄生式继承 继承原型

 1             /*
 2              *寄生式继承 继承原型
 3              * 传递参数subclass 子类
 4              * 传递参数superclass 父类
 5              * */
 6             function inheritPrototype(subclass,superclass){
 7                 //复制一份父类的原型副本保存在变量中
 8                 var p=inheritobject(superclass.prototype);
 9                 //修正因为重写子类原型导致子类的constructor属性被修改
10                 p.constructor=subclass;
11                 //设置子类原型
12                 subclass.prototype=p;
13             }

抽象工厂方法

1             //抽象工厂方法
2             var VehicleFactory=function(subtype,supertype){
3                 //supertype通过typeof判断是否是抽象工厂模式创建的抽象类
4                 if(typeof VehicleFactory[supertype] === 'function'){
5                     inheritPrototype(subtype,supertype);
6                 }else{
7                     throw new Error('未创建该抽象类');
8                 }
9             }

抽象工厂方法创建抽象类

 1            VehicleFactory.Car=function(){
 2                 this.type='car';
 3             }
 4
 5             VehicleFactory.Car.prototype={
 6                 getPrice:function(){
 7                     return new Error("抽象方法不能调用");
 8                 },
 9                 getSpeed:function(){
10                     return new Error("抽象方法不能调用");
11                 },
12                 getColor:function(){
13                     return new Error("抽象方法不能调用");
14                 }
15             }
16
17             VehicleFactory.Bus=function(){
18                 this.type='bus';
19             }
20             VehicleFactory.Bus.prototype={
21                 getPrice:function(){
22                     return new Error("抽象方法不能调用");
23                 },
24                 getSpeed:function(){
25                     return new Error("抽象方法不能调用");
26                 }
27             }

宝马汽车子类

 1            var BMW =function(price,speed){
 2                 this.price=price;
 3                 this.speed=speed;
 4             }
 5             //抽象工厂实现对Car抽象类 的继承
 6             VehicleFactory(BMW,'Car');
 7             BMW.prototype.getPrice = function(){
 8                 return this.price;
 9             }
10             BMW.prototype.getSpeed = function(){
11                 return this.speed;
12             }

测试代码

1             var BMWObject = new BMW(100,100);
2             console.log(BMWObject.getPrice());
3             console.log(BMWObject.getColor());

转载于:https://www.cnblogs.com/jtnote/p/5981693.html

javascript-抽象工厂模式相关推荐

  1. javascript抽象工厂模式

    一.简单工厂 定义:简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 比如你去专门卖鼠标的地方你可以买各种各样的 ...

  2. Javascript设计模式(三)-- 抽象工厂模式

    抽象工厂模式:通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例. 抽象类 //测试抽象类,使用其实例方法时会抛出错误 var test = function(){}; te ...

  3. JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》

    工厂模式 前言:就前端 JavaScript 语言来说,可以把简单工厂模式.工厂方法模式.抽象工厂模式归纳为一种即工厂模式: 一. 简单工厂模式 介绍/概述: 简单工厂模式的工厂类一般是使用静态方法, ...

  4. 【JavaScript设计模式张容铭】抽象工厂模式深度剖析——关于继承与constructor属性的深度理解

    写在前面 最近阅读了张容铭的<JavaScript设计模式>一书,阅读到抽象工厂模式一节时对书上的代码产生了疑问,但同时在解决疑问的过程中,对继承又产生了新的理解. 我仔细查阅了很多文章, ...

  5. JavaScript 设计模式学习第九篇- 抽象工厂模式

    工厂模式 (Factory Pattern),根据输入的不同返回不同类的实例,一般用来创建同一类对象.工厂方式的主要思想是将对象的创建与对象的实现分离. 抽象工厂 (Abstract Factory) ...

  6. 设计模式(6)[JS版]-JavaScript如何实现抽象工厂模式?

    目录 1 学习目标 2 什么是抽象工厂模式? 3 抽象工厂模式作用 4 工厂模式参与者 5 代码实现 1 学习目标 通过本篇文章的学习,你应当掌握以下知识: 1 知道什么是抽象工厂模式? 2 掌握抽象 ...

  7. 《JavaScript设计模式》笔记 之 抽象工厂模式

    抽象工厂模式 抽象工厂模式:通过对类的工厂抽象使其业务用域对产品类簇的创建,而不是负责创建某一类产品的实例. 抽象类 JavaScript 中 abstract 还是保留字,虽然不像传统面向对象创建, ...

  8. JavaScript设计模式———抽象工厂模式

    定义: 抽象工厂其实是实现子类继承父类的方法,只是一个方法.抽象工厂模式一般用在多人协作的超大型项目中,并且严格的要求项目以面向对象的思想进行完成. 简单工厂模式和工厂模式都是直接生产实例的,抽象工厂 ...

  9. JavaScript 23 种设计模式之 4 抽象工厂模式

    JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...

  10. javascript设计模式-抽象工厂模式

    1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

最新文章

  1. 人工神经外网络中为什么ReLu要好过于Tanh和Sigmoid Function?
  2. 独家专访 | 红布林(Plum​)庞博:万亿元二手时尚交易蓝海的生存法则
  3. .dat文件写入byte类型数组_《计算机导论》课程实验报告(文件)
  4. 淘宝代码和html区别,taobao.html
  5. ip地址合法性检查 php,php检查验证IP为有效IP地址函数
  6. C#.Net工作笔记003---异步编程async await
  7. 2018.7.11 昨天晚上的列表(字典)嵌套题
  8. 捷联惯导姿态解算基础
  9. 虚拟串口服务器连接485转网口,串口服务器 串口转以太网 RS232转以太网 485转以太网 串口转网口...
  10. 网络爬虫设计中需要注意的几个问题
  11. Win10安装软件弹出:当前无法访问>SmartScreen
  12. MIRACL密码库分析报告3 mrio.c
  13. 接手1号店的京东 更看重与沃尔玛的合作
  14. HTML简单学习记录
  15. 在Windows下远程桌面连接Linux - VNC篇
  16. Linux使用wget下载文件时报错
  17. 作文批改网如何粘贴英语作文
  18. 20165331 学习基础和C语言基础调查
  19. USB TTL 连接ESP8266 12F 外接电源方法
  20. 22-基于单片机的LED点阵滚动显示系统

热门文章

  1. linux 内核/proc
  2. java toString
  3. Oracle的启动和关闭
  4. 在vSAN中存储ESXi核心转储和暂存分区(2074026)
  5. 一步步实现SDDC-NSX MGR安装和主机准备
  6. Java基础学习总结(140)——Java8 Stream之Stream流创建的几种方式
  7. 阿里电商架构演变之路(一)
  8. Java Web学习总结(36)——JavaEE知识体系及项目开发过程的总结
  9. Java基础学习总结(105)——让 Java 开发更简单,提高工作效率!
  10. java 从已知日期计算干支纪日_两个日期计算