javascript-抽象工厂模式
抽象工厂模式笔记
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-抽象工厂模式相关推荐
- javascript抽象工厂模式
一.简单工厂 定义:简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 比如你去专门卖鼠标的地方你可以买各种各样的 ...
- Javascript设计模式(三)-- 抽象工厂模式
抽象工厂模式:通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例. 抽象类 //测试抽象类,使用其实例方法时会抛出错误 var test = function(){}; te ...
- JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》
工厂模式 前言:就前端 JavaScript 语言来说,可以把简单工厂模式.工厂方法模式.抽象工厂模式归纳为一种即工厂模式: 一. 简单工厂模式 介绍/概述: 简单工厂模式的工厂类一般是使用静态方法, ...
- 【JavaScript设计模式张容铭】抽象工厂模式深度剖析——关于继承与constructor属性的深度理解
写在前面 最近阅读了张容铭的<JavaScript设计模式>一书,阅读到抽象工厂模式一节时对书上的代码产生了疑问,但同时在解决疑问的过程中,对继承又产生了新的理解. 我仔细查阅了很多文章, ...
- JavaScript 设计模式学习第九篇- 抽象工厂模式
工厂模式 (Factory Pattern),根据输入的不同返回不同类的实例,一般用来创建同一类对象.工厂方式的主要思想是将对象的创建与对象的实现分离. 抽象工厂 (Abstract Factory) ...
- 设计模式(6)[JS版]-JavaScript如何实现抽象工厂模式?
目录 1 学习目标 2 什么是抽象工厂模式? 3 抽象工厂模式作用 4 工厂模式参与者 5 代码实现 1 学习目标 通过本篇文章的学习,你应当掌握以下知识: 1 知道什么是抽象工厂模式? 2 掌握抽象 ...
- 《JavaScript设计模式》笔记 之 抽象工厂模式
抽象工厂模式 抽象工厂模式:通过对类的工厂抽象使其业务用域对产品类簇的创建,而不是负责创建某一类产品的实例. 抽象类 JavaScript 中 abstract 还是保留字,虽然不像传统面向对象创建, ...
- JavaScript设计模式———抽象工厂模式
定义: 抽象工厂其实是实现子类继承父类的方法,只是一个方法.抽象工厂模式一般用在多人协作的超大型项目中,并且严格的要求项目以面向对象的思想进行完成. 简单工厂模式和工厂模式都是直接生产实例的,抽象工厂 ...
- JavaScript 23 种设计模式之 4 抽象工厂模式
JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...
- javascript设计模式-抽象工厂模式
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
最新文章
- 人工神经外网络中为什么ReLu要好过于Tanh和Sigmoid Function?
- 独家专访 | 红布林(Plum​)庞博:万亿元二手时尚交易蓝海的生存法则
- .dat文件写入byte类型数组_《计算机导论》课程实验报告(文件)
- 淘宝代码和html区别,taobao.html
- ip地址合法性检查 php,php检查验证IP为有效IP地址函数
- C#.Net工作笔记003---异步编程async await
- 2018.7.11 昨天晚上的列表(字典)嵌套题
- 捷联惯导姿态解算基础
- 虚拟串口服务器连接485转网口,串口服务器 串口转以太网 RS232转以太网 485转以太网 串口转网口...
- 网络爬虫设计中需要注意的几个问题
- Win10安装软件弹出:当前无法访问>SmartScreen
- MIRACL密码库分析报告3 mrio.c
- 接手1号店的京东 更看重与沃尔玛的合作
- HTML简单学习记录
- 在Windows下远程桌面连接Linux - VNC篇
- Linux使用wget下载文件时报错
- 作文批改网如何粘贴英语作文
- 20165331 学习基础和C语言基础调查
- USB TTL 连接ESP8266 12F 外接电源方法
- 22-基于单片机的LED点阵滚动显示系统