开闭原则:对扩展开放,对修改关闭。或者换句话来说就是一个模块在不被修改的前提下可以被扩展。
说的有点抽象,至少不是那么容易去理解,我举个例子来理解下,如果写的有误也欢迎各位指出。
我有个抽象的图形类如下
package sty;
public abstract class Graph {
//获取图形面积,这里只返回整数
public abstract int getArea();
}
具体的求面积的实现是根据图形的形状来确定的,比如我有以下几个具体的图形类
package sty;
//圆
public class Circle extends Graph {
//半径
private int radius;
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public int getArea() {
return 3 * radius * radius;
}
}
package sty;
//三角形
public class Triangle extends Graph {
//底边长
public int bottom;
//高
public int height;
public int getBottom() {
return bottom;
}
public void setBottom(int bottom) {
this.bottom = bottom;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
@Override
public int getArea() {
return bottom * height / 2;
}
}
这符合大多数人的设计逻辑,这里就反映了一种开闭原则。首先对于求面积的方法public abstract int getArea();这种形式我们是不会改变的,但他具体的实现则取决于具体的图形,具体实现这部分是可以扩展的。(不知道我这里例子举的恰当否?)
那么在这种原则下,对我们编码产生的影响如下:
Graph g = new xxx(); //这里可能是三角,也可能是圆,但无论哪种具体的实现类,对我么求面积来说并没有什么不同
......
g.getArea();
顺便给出一个介绍设计原则的文章http://www.kuqin.com/design-patterns/20080727/12537.html
分享到:
相关推荐
开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提...
开闭原则是一种设计思想,并不局限于java语言
开闭原则----图片缓存
JAVA设计模式之设计原则 ---开闭原则源码
设计模式6大原则:开闭原则
python开闭原则 开闭原则是面向对象设计中的一个重要原则,它指出一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改已有代码。...
C# 版本,OCP原则的Demo,内部培训资料。
开闭原则1
开闭原则OCP.zip
开闭原则.rar开闭原则.rar开闭原则.rar之java设计模式
Java Web设计模式之OCP(开闭原则) 如有疑问,请留言!
软件设计的开闭原则:如何不修改代码却能实现需求变更
开闭原则和依赖倒置的例子Java.doc
论开闭原则在JAVA程序设计中的应用
论开闭原则在JAVA程序设计中的应用.pdf
主要介绍了C# 抽象类与开闭原则的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。
面向对象设计原则概述 单一职责 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则
。。。