前端设计模式

1、工厂模式
function playerFactory (username){
var user= new object ();
user .username = username;
return user ;
}
var zs = playerFactory( 'zhangsan ')
优点:将所有实例化的代码封装在一起,实现代码重复。工厂模式解决了重复创建对象的问题。
缺陷:没有使用new关键字,在创建对象的过程中,看不到构造函数实例化的过程。每个实例化的对象都创建相应的变量和函数,降低了性能,造成资源的浪费
2、单例模式
优点:保证类的实例只有一个,用来减少重复创建对象,节约系统资源。
缺陷:单例类的职责过重,里面的代码可能会过于复杂,如果实例化的对象长时间不利用,系统会认为它是垃圾而进行回收。
应用:基于ES6使用模块导入导出,也可以看作单例模式,vuex,redux中的store都是单例模式实现的。
3、构造函数模式(知道对象的类型)
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
printName: function(){
console.log(this.name);
},
}
var person = new Person('xin', 22);
person.printName(); // xin
优点:每个实例的公共对象都是不同的, 不会相互影响。
缺点: 每一次实例化, 该对象内部函数都会被创建一遍。对象继承并需要在子类中调用父类的方法是不可能的, 只可以覆盖或者使用
4、代理模式
代理( proxy)模式,即为目标对象指定代理对象,并由代理对象代替目标对象控制对目标对象的访问
5、原型模式
优点:减少内存消耗, 系统资源占用少, 所有实例共享同一方法, 不会创建多个;原型对象继承时,子类在重写父类原型方法时很方便调父类房法,再扩展。
缺点:如果共享的对象是引用类型 对象则也会造成多个实例共享,可能会相互影响

posted @ 2022-09-14 00:02  然然初心未改  阅读(19)  评论(0编辑  收藏  举报