前端用到的設計模式之開閉原則. 里氏代換原則

開閉原則,若是jQuery源碼稍微瞭解,確定知道它的應用了.閉包

一個模塊----函數或對象,應該憑着經驗來判斷, 對擴展開放,對修改關閉.------函數

通常用繼承實現擴展,用閉包來實現關閉.this

爲何開閉原則?它跟複雜度有什麼關係,?spa

複雜度,就是一個函數裏包含的功能個數;當開閉原則不遵照時,想擴展功能,必然去原來的函數裏添加代碼,致使原來的函數功能增長.prototype

 

里氏代換原則:是對開閉原則的補充,子類能夠擴展父類,但不可改變父類.對象

function changFangxing(height,width){
this.width = 0;
this.height = 0;
this.setWidth = function(width){
this.width = width;
};
this.setHeight = function(height){
this.height = height
}
this.getWidth = function (){
return this.width
}
this.getHeight = function(){
return this.height
}
}
zhengfangxing.prototype = new changFangxing();

function zhengfangxing(){
this.setHeight = function(height){
this.width = height;
this.height = height;
}
this.setWidth = function(width){
this.setHeight(width)
}
}

function resetSize(o){
while(o.getHeight() < o.getWidth()){
o.setHeight(o.getWidth + 1)
}
console.log('over')
}
var oCh = new changFangxing(100,200);
resetSize(oCh)
var oZh = new zhengfangxing()
oZh.setHeight(100)
resetSize(oZh)//會是死循環
相關文章
相關標籤/搜索