js抽象工厂模式
来源:互联网 发布:淘宝充值方式 编辑:程序博客网 时间:2024/05/29 14:26
<h1>第五章:出现的都是幻觉——抽象工厂模式</h1><p>抽象工厂模式(Abstract Factory):通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例。</p><p>5.1: 带头模范——抽象类</p><p>javascript中abstract还是一个保留字,所以目前还不能像传统面向对象的语言那样请以创建。抽象类是一种声明但不能使用的类,当你使用时就会报错,不过,javascript是灵活的,所以我们可以在类的方法中手动抛出错误来模拟抽象类。</p><script>//汽车抽象类,当使用其实例对象的方法会报错 var Car = function(){}; Car.prototype = { getPrice: function(){ return new Error( "抽象方法不能直接调用" ); }, getSpeed: function(){ return new Error( "抽象方法不能直接调用" ); } }</script><p>我们看到我们创建的这个car类其实什么都不能做,创建时没有任何属性,然而原型prototype上的方法也不能用,否则会报错。</p><p>但在继承上是很有用的,因为定义了一个类,并定义了该类所必备的方法,如果子类没有重写这些方法,那么调用时能找到这些方法便会报错。这一特点是很有必要的,因为在大型应用中,总会有一些子类继承父类,这些父类经常会定义一些必要的方法,却没有具体的实现。那么子类创建了一个对象,该对象总是具备一些必要的方法,但如果这些必要的方法从父类继承过来而没有具体去重写实现,那么实例化对象便会调用父类中的这些方法,如果父类能有一个很友好的提示,那么对于忘记重写子类这些错误遗漏的避免的很有帮助的。</p><p>这也是抽象类的一个作用,即定义一个产品簇,并声明一些必要的方法,如果子类没有去重写就会抛出异常。</p><h1>幽灵工厂——抽象工厂模式</h1><script> var VehicleFactory = function( subType, superType ){ //判断抽象工厂中是否有该抽象类 if( typeof VehicleFactory[ superType ] ==="function" ){ //缓存类 var F = function(){}; //继承父类的属性和方法 F.prototype = new VehicleFactory[ superType ](); //子类原型继承父类 subType.prototype = new F(); }else{ //不存在该抽象类 throw new Error( "" ); } } //小汽车抽象类 VehicleFactory.Car = function(){ this.type = "car"; }; VehicleFactory.Car.prototype = { getPrice: function(){ return new Error( "抽象类无法调用" ); }, getSpeed: function(){ return new Error( "抽象类无法调用" ); } }; var BMW = function( price, speed ){ this.price = price; this.speed = speed; }; VehicleFactory( BMW, "Car" ); BMW.prototype.getPrice = function(){ return this.price; } var bmw = new BMW( 100000, 1000 ); console.log( bmw.getPrice() );</script>
<h1>忆之获</h1> <p>抽象工厂模式是设计模式中最抽象的一种,也是创建模式中唯一一种抽象化创建模式。该模式创建出来的结果不是一个真实的对象实例, 而是一个类簇,他制定了类的结构,这也就区别于简单工厂模式创建单一对象,工厂方法模式创建多类对象。当然由于JavaScript中不支持抽象化创建于虚拟方法, 所以到这种模式不能像其他面向对象语言中应用的那么广泛。</p>
0 0
- js抽象工厂模式
- js 抽象工厂模式
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 【JS设计模式】温习简单工厂模式、工厂方法模式、抽象工厂模式概念
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- HDU1082 Matrix Chain Multiplication 栈+字符串处理
- 如何实现两个系统之间的数据同步
- CAM350简单编辑gerber文件(【增加一条线】 【复制元素】 【删除元素】)
- 【Java】数组--二维数组
- unzip
- js抽象工厂模式
- java多态详解
- TextView 的隐藏技能
- [java]内部类
- PIL报错:The _imaging C module is not installed
- 宏定义中使用do{}while(0)的好处
- Spring使用@Autowired注解自动装配
- RecycleView 底部监听
- 使用tensorflow构建简单卷积神经网络