为什么需要设计工厂模式?
举例说明:
当我们创建一个学生对象后,本学生的属性和方法都是唯一的。假如现在需求是:做一个xx项目,需要有多个学生,那么我们只能多加一个学生,然后把创建的第一个学生的对象的代码重复一遍。不仅增加了代码的冗余,而且不切实际。这时候就需要设计工厂模式了。
什么是工厂模式?
工厂模式就是当创建的某个对象需要重复或者有大量的需求时,的一种设计模式。把创建的对象的代码封装到一个函数里,然后当这个对象需要多次使用时,只需要重复调用这个函数即可。
- 分步骤写出工厂模式:
首先我们创建一个对象,并且写上属性和方法:
<script>
var obj = new Object();
obj.sex = "女";
obj.age = 18;
obj.weight = 120;
obj.height = 180;
obj.name = "小明";
obj.study = function ()
{
console.log(this.name + "同学的身高是" + this.height);
};
</script>
2. 把这个对象和它的属性,方法封装成一个函数,并调用测试:
<script>
function createPersonObj()
{
var obj = new Object();
obj.sex = "女";
obj.age = 18;
obj.weight = 120;
obj.height = 180;
obj.name = "小明";
obj.study = function ()
{
console.log(this.name + "同学的身高是" + this.height);
};
return obj;
}
var stu = createPersonObj();
stu.study();
</script>
输出结果为:
3. 这个创建的对象的属性是唯一的,当有多个对象时,我们可以传入参数避免这个问题:
<script>
function createPersonObj(name, height)
{
var obj = new Object();
obj.sex = "女";
obj.age = 18;
obj.weight = 120;
obj.height = height;
obj.name = name;
obj.study = function ()
{
console.log(this.name + "同学的身高是" + this.height);
};
return obj;
}
var stu = createPersonObj("小明", 180);
stu.study();
var stu1 = createPersonObj("小王", 190);
stu1.study();
</script>
运行结果为: