前端用到的设计模式之开闭原则. 里氏代换原则

开闭原则,如果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

时间: 2024-10-06 23:46:57

前端用到的设计模式之开闭原则. 里氏代换原则的相关文章

西游记之设计模式原则——里氏代换原则

里氏代换原则 --子类能替换父类 1 package lishidaihuan; 2 3 class TangSeng { 4 public void QuJing() { 5 System.out.println("施主,贫僧自东土大唐而来,去往西天拜佛求经!"); 6 } 7 } 8 9 class TuDi extends TangSeng { 10 public void QuJing() { 11 super.QuJing(); 12 System.out.println(&

设计模式之里氏代换原则(LSP)

里氏代换原则(Liskov Substitution Principle, LSP) 1 什么是里氏代换原则 里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章<Data Abstraction and Hierarchy>里面提出来的,主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中的蕴涵的原理.2002年,我们前面单一职责原则中提到的软件工程大师Robert C. Martin,

Java Web 设计模式之开闭原则

1.开闭原则(OCP) 遵循开闭原则设计出的模块具有两个主要特征: (1)对于扩展是开放的(Open for extension).这意味着模块的行为是可以扩展的.当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为.也就是说,我们可以改变模块的功能. (2)对于修改是关闭的(Closed for modification).对模块行为进行扩展时,不必改动模块的源代码或者二进制代码.模块的二进制可执行版本,无论是可链接的库.DLL或者.EXE文件,都无需改动. 2.通过UML

设计模式中的里氏代换原则

设计模式中的里氏代换原则 Table of Contents 1 里氏代换原则 2 模式中的里氏代换原则 2.1 策略模代 2.2 合成模式 2.3 代理模式 3 如何继承 3.1 不要从具体类继承 3.2 避免错误继承 1 里氏代换原则 从开-闭原则中可以看出来面向对象的重要原则是创建抽象化,并从抽象化导出具体化.具 体化可以给出不同的版本,每一版本都给出不同的实现.里氏代换原则从另一个侧面描述 抽象化和具体化,里氏代换原则表明:一个软件如果使用的是一个基类的话,那么一定适 用于其子类,而且它

设计模式 之 里氏代换原则 (Liskov&#39;s Substitution Principle)

Motivation 动机 All the time we design a program module and we create some class hierarchies. Then we extend some classes creating some derived classes. 一直以来,我们设计程序模块,并且建立类的层次关系,然后扩展类来创建派生类. We must make sure that the new derived classes just extend wi

设计模式之开闭原则

Open-Closed Principle软件设计中的“开-闭原则” 这个原则最早是由Bertrand Meyer提出,英文的原文是:Software entities should be open for extension,but closed for modification.意思是说,一个软件实体应当对扩展开放,对修改关闭.也就是说,我们在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,换句话说就是,应当可以在不必修改源代码的情况下改变这个模块的行为. 满足OCP的设计给

&quot;围观&quot;设计模式(6)--开闭原则(Open/Closed Principle)

在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为.该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程.遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程. 开闭原则的命名被应用在两种方式上.这两种方式都使用了继承来解决明显的困境,但是它们的目的,技术以及结果是不同的.----WI

设计模式SOLID - 开闭原则

The Open – Closed principle have been formed by Bertrand Meyer in 1988, it can be paraphrased as: Software entities (let it be classes, modules, functions, etc.) should be open for extending and closed for modification.  This simple rule means that w

设计模式SOLID - 里氏代换原则

Principles Rule!It's been a while since OOP/Design Pattern principles have been a topic on this blog, and now is as good time as any. The 1987 OOPSLA keynote address by Barbara Liskov contained what has become known as the Liskov Substitution Princip