开闭原则
对修改关闭,对扩展开放
当软件需要变化时,通过扩展来实现功能,而不是修改原有代码来实现
示范案例
public class Main {
public static void main(String[] args) {
draw(1);
draw(2);
}
private static void draw(int type) {
if (type == 1) {
System.out.println("绘制圆形");
} else if (type == 2) {
System.out.println("绘制三角形");
}
}
}
在我们没有使用开闭原则时,如果这时候我们需要添加一个 绘制方形。我们必须修改 draw 才可以达到我们想要的结果
public class Main {
public static void main(String[] args) {
draw(1);
draw(2);
draw(3);
}
private static void draw(int type) {
if (type == 1) {
System.out.println("绘制圆形");
} else if (type == 2) {
System.out.println("绘制三角形");
} else if (type == 3) {
System.out.println("绘制方形");
}
}
}
下面我们将代码使用开闭原则重构一次
public abstract class Shape {
public abstract void draw();
}
public class Circular extends Shape{
@Override
public void draw() {
System.out.println("绘制圆形");
}
}
public class Triangle extends Shape{
@Override
public void draw() {
System.out.println("绘制三角形");
}
}
我们让所有的图形都必须继承抽象类 Shape 这样可以使所有的类都必须去实现绘制方法 draw ,我们在使用这些图形时,只需要进行调用相应图形的 draw 方法就可以得到想要的结果,而不需要对其他进行更改
网友评论