性能优化在;“工厂设计模式”;在JavaScript中
我想在我的应用程序中使用factory设计模式,并利用它的一些优点,如可读性、灵活性、可扩展性、封装性和“this”操作符的正确绑定“在开发过程中。由于我的应用程序在加载网页时生成html代码,因此在我的例子中,创建对象的性能和内存使用非常重要。请看下面的例子性能优化在;“工厂设计模式”;在JavaScript中,javascript,performance,design-patterns,factory-pattern,Javascript,Performance,Design Patterns,Factory Pattern,我想在我的应用程序中使用factory设计模式,并利用它的一些优点,如可读性、灵活性、可扩展性、封装性和“this”操作符的正确绑定“在开发过程中。由于我的应用程序在加载网页时生成html代码,因此在我的例子中,创建对象的性能和内存使用非常重要。请看下面的例子 //委托工厂设计 常量车=功能(颜色) { 常量CarPrototype=函数(颜色) { 常量carPrototype={}; carPrototype.color=颜色; //私人职能 函数内部() { 控制台日志(“内部”); /
//委托工厂设计
常量车=功能(颜色)
{
常量CarPrototype=函数(颜色)
{
常量carPrototype={};
carPrototype.color=颜色;
//私人职能
函数内部()
{
控制台日志(“内部”);
// ...
}
//公共职能
carPrototype.gas=函数()
{
内部();
// ...
}
carPrototype.brake=函数()
{
// ...
}
返回carPrototype;
}
返回Object.create(CarPrototype(color));
}
//传统构造函数
常量车=功能(颜色)
{
这个颜色=颜色;
// ...
}
Car.prototype.internal=函数()
{
控制台日志(“内部”);
// ...
}
Car.prototype.gas=函数()
{
这个。内部();
// ...
}
Car.prototype.brake=功能()
{
// ...
}
函数myFunction()
{
const mazdaF=汽车(“红色”);
const mazdaT=新车(“红色”);
控制台日志(mazdaF,mazdaT);
}
JSPerf是一个很好的测试工具,所以我不能真正测试你的,但是。。。我想说,这更具可读性和可维护性,同时速度更快(使用ES6类):
const Car=(函数(){
常量内部=符号(“内部”);
班车{
构造器(颜色){
这个颜色=颜色;
}
[内部](){
控制台日志(“内部”);
// ...
}
气体(){
这[内部]();
// ...
}
break(){
// ...
}
}
返回车;
})();
出租汽车=新车(“红色”);
汽车。汽油();
控制台日志(car)代码>汽车的刹车不同于刹车。如果你经常或大量地创建对象,那么创建对象的性能可能很重要。此外,如果您想了解性能差异,您应该创建一些HTML,对吗?最后,我不确定这是一个工厂模式,因为没有类型差异。但是工厂意味着很多东西。@Fuhrmanator你能解释为什么它不是工厂模式吗?工厂通常意味着一个函数,它使用创建逻辑实例化类的子类型。您的示例只是初始化。当然,在JavaScript中,函数是可以分配的,所以它可能不那么重要。谢谢你推荐的模式,但是很多专家说在JS中使用“类”是一种不好的做法,你应该避免它,因为它不是你所认为的经典继承中存在的类。我不喜欢使用这个模式,尽管它与构造函数模式几乎相同。在我看来,避免使用一个有用的工具,因为你认为你可能没有正确地理解它不是很专业。我宁愿正确地学习我的工具并按原样使用它们。ES6类绝对没有错,只要您知道它们不是Java类,并且知道它们的行为方式;虽然它们几乎只是围绕原型继承的语法糖,但它们更具可读性。但随你的便。