标签:var script dstat 决定 复杂 创建 foo 有助于 lsh
在JS中创建对象会习惯的使用new关键字和类构造函数(也是可以用对象字面量)。
工厂模式就是一种有助于消除两个类依赖性的模式。
工厂模式分为简单工厂模式和复杂工厂模式,这篇主要讲简单工厂模式。
简单工厂模式:使用一个类来生成实例。
复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。
简单工厂模式:
常用对象方法创建和调用
var BallShop = function(){}; BallShop.prototype = { sellBall : function(model){ var ball; switch(model){ case"tennis": ball=new TennisBall();break; case"bask": ball=new BasketBall();break; case"volly": ball=new VollyBall();break; default: ball=new FootBall();break; } return ball; } } var balltype = new BallShop(); balltype .sellBall("tennis");
以上方式能够满足大多数情形下使用,但扩展性就不友好了,如果需要添加一些新的球类,必须修改球类的switch部分。
把这部分单独出来交给一个简单额工厂对象:
<script type="text/javascript">
var BasketBall=function(){
console.log("baseketball is hotting at unitedstates");
}
var TennisBall=function(){
console.log("you should buy a TennisBall")
}
var VollyBall=function(){
console.log("VollyBall is very interesting");
}
var FootBall=function(){
console.log("FootBall...")
}
var BallFactory={
createBall:function(model){
var ball;
switch(model){
case"tennis":
ball=new TennisBall();break;
case"bask":
ball=new BasketBall();break;
case"volly":
ball=new VollyBall();break;
default:
ball=new FootBall();break;
}
return ball;
}
}
var BallShop = function(){};
BallShop.prototype = {
sellBall:function(model){
var ball = BallFactory.createBall(model);
return ball;
}
}
//调用
var ball1=new BallShop();
ball1.sellBall("tennis");
var ball2=new BallShop()
ball2.sellBall("balls");
</script>
BallFactory是一个脱离于BallShop的单体。能够降低耦合度。当需要新添加类型的时候,只要修改BallFactory工厂单体对象就行。
最后运行的结果为:

标签:var script dstat 决定 复杂 创建 foo 有助于 lsh
原文地址:http://www.cnblogs.com/lcy-house/p/6200505.html