博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端用到的设计模式之开闭原则. 里氏代换原则
阅读量:7144 次
发布时间:2019-06-29

本文共 1009 字,大约阅读时间需要 3 分钟。

开闭原则,如果jQuery源码稍微了解,肯定知道它的应用了.

一个模块----函数或对象,应该凭着经验来判断, 对扩展开放,对修改关闭.------

一般用继承实现扩展,用闭包来实现关闭.

为什么开闭原则?它跟复杂度有什么关系,?

复杂度,就是一个函数里包含的功能个数;当开闭原则不遵守时,想扩展功能,必然去原来的函数里添加代码,导致原来的函数功能增加.

 

里氏代换原则:是对开闭原则的补充,子类可以扩展父类,但不可改变父类.

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)//会是死循环

转载于:https://www.cnblogs.com/dangdanghepingping/p/10121783.html

你可能感兴趣的文章
【文文殿下】APIO2019游记
查看>>
有滚动条得情况下,求标签离浏览器视口高度
查看>>
总结3
查看>>
告别2015, 展望2016
查看>>
CentOS7 64位安装mysql教程
查看>>
继承(类和结构继承)
查看>>
开通博客
查看>>
OSI七层协议和TCP/IP五层协议
查看>>
关于Linux内核学习(经典)
查看>>
简单理解java中timer的schedule和scheduleAtFixedRate方法的区别
查看>>
滤波电容的选择
查看>>
Selenium2+python自动化5-操作浏览器基本方法
查看>>
洛谷——P1012拼数字符串操作(拼接排序)
查看>>
LeetCode OJ:Maximum Depth of Binary Tree(二叉树最大深度)
查看>>
此实现不是Windows平台FIPS验证的加密算法的一部分
查看>>
Codeforces Round #306 (Div. 2) 550A Two Substrings
查看>>
UDP_TCP示意图
查看>>
解决Could not load file or assembly CefSharp.Core.dll的问题
查看>>
mvc jquery 修改 viewbag
查看>>
容器的使用(四)
查看>>