JavaScript 面向对象编程 (一) 工厂模式

面向对象的语言(像Java,C#)都有一个类的概念,实例化的对象都是某个类的实例。但是ECMAScript没有类的概念,所以JavaScript的面向对象的实现和其他语言都有很大的不同。

 

最简单的创建对象的方法就是Object()构造函数:

  var person = new Object();

  person.name = 'Leo';

  person.age = '25';

  person.introduce = function() {

    alert ( 'Hello, my name is '+ this.name );  

  }

  person.introduce(); // 弹出 Hello, my name is Leo

上面的代码就可以创建一个person对象。我们先用new Object()的方法创建一个Ojbect类型的实例,Object对象是最基本的对象;然后我们为其添加了两个属性:name和age,还添加了一个方法introduce。当时这种方式的存在很大问题,当我们会有大量同一种对象的时候,我们需要写大量类似代码,非常不利于开发和代码维护。

 

工厂模式

  顾名思义,工厂模式就是将对象的当成工厂里面生产的产品,而参数就像是生产产品的原料,我们只需要将原料给工厂,工厂就会生产出我们想要的产品,即我们需要的对象。工厂某事可以封装对象的创建过程,不仅大大简化了开发,而且便于维护,当我们需要给对象添加新的属性的时候,只简答的需要修改工厂类就可以了。但是在JavaScript中,我们通常只需要用一个函数来实现工厂模式。

例子:

function createPerson( name, age ) {

  var person = new Object();

  person.name = name;

  person.age = age;

  person.introduce = function() {

    alert ( 'Hello, my name is '+ this.name );  

  }

  return person;

}

 

var p1 = createPerson( 'Leo', '25' );

var p2 = createPerson( 'Jack', '20' );

 

p1.introduce(); // Hello, my name is Leo

p2.introduce(); // Hello, my name is Jack

 是不是感觉工厂模式让创建对象变得很简单和方便了,虽然工厂模式解决了大量重复代码的问题,但是工厂模式依然存在一个问题就是无法知道对象的类型,因为所有对象都是Object类型。如果再写一个创建动物的工厂模式createAnimal,那么动物和人类一样都是Object类型了。当然会有其他方案来解决这个问题,下节继续介绍其他创建对象的方式。

转载于:https://www.cnblogs.com/iRidescent-ZONE/archive/2012/06/30/2571339.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值