设计模式学习01-简单工厂模式

简单工厂模式

又称静态工厂方法,由一个工厂对象决定创建,某一种产品对象类的实例,主要用来创建同一类对象。



例子一

比如创建一些书,这些书有公共的属性,比如目录,页码等,也有一些不同的属性,比如出版日期,作者等等,所以对于不同的属性进行针对性处理,比如将不同属性作为参数传递进来

	function createBook(name, time, type) {
		// 创建一个对象,并对对象拓展属性和方法
		var obj = new Object();
		obj.name = name;
		obj.time = time;
		obj.type = type;
		obj.getName = function () {
			console.log(this.name);
		}
		return obj;
	}
	var b1 = createBook("js book", 2014, "js");
	var b2 = createBook("css book", 2012, "css");
	b1.getName();
	b2.getName();

通过创建一个新对象然后包装增强其属性和功能来实现。如果这些类继承同一父类,但是创建的对象是一个新的个体,所以此时的方法或者属性是不能公用的。

例子二

	var BasketBall = function () {
		this.name = "篮球";
	}
	BasketBall.prototype = {
		getMemeber: function() {
			console.log("需要五名队员")},
		getBallSize: function() {w
			console.log("很大");
		}
	}
	var FootBall = function () {
		this.name = "足球";
	}
	FootBall.prototype = {
		getMemeber: function() {
			console.log("需要11名队员")},
		getBallSize: function() {
			console.log("也很大");
		}
	}
	// 运动工厂
	var sportsFactory = function(name) {
		switch(name) {
			case 'NBA':
				return new BasketBall();
			case 'wordCup':
				return new FootBall();	
		}
	}
	// 创建需要的球类
	var basketbBall = sportsFactory('wordCup');

这种通过类的实例化对象创建。如果这些类继承同一父类,那么他们父类上的原型方法是可以公用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值