开放-封闭原则(Open-Close Principle):对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)
怎么样才能做到Open for extension,Closed for modification?抽象编程,抽象出一个大概的需求,这个抽象是不可变的,但是它的实现却是自由发挥的,通过抽象来隔离以后发生的同类变化。
下面演示一个Demo:
public class Business {
public void process(int choice) {
switch(choice) {
case 1 :
System.out.println("存款");
break;
case 2 :
System.out.println("取款");
break;
case 3 :
System.out.println("查询");
break;
}
}
}
class StartUp {
public static void main(String[] args) {
Business business = new Business();
business.process(1);
business.process(2);
business.process(3);
}
}这样的程序是可以执行,也没错,当然效率也不错,但是如果有些的业务增加了,你的这个类就修改了,破坏了OCP,正确的OCP是如下体现的:
public interface BusinessProcess {
public void process();
}
class BusinessSave implements BusinessProcess {
@Override
public void process() {
System.out.println("存款");
}
}
class BusinessGet implements BusinessProcess {
@Override
public void process() {
System.out.println("取款");
}
}
class BusinessQuery implements BusinessProcess {
@Override
public void process() {
System.out.println("查询");
}
}
class Start_Up {
public static void main(String[] args) {
BusinessProcess bp;
bp = new BusinessSave();
bp.process();
bp = new BusinessGet();
bp.process();
bp = new BusinessQuery();
bp.process();
}
}定义了一个接口,这个接口是Closed for modification,而它的实现是Open for extension,符合了开放-封闭原则,这个原则是面向对象的核心所在,遵循这个原则可以使程序的维护性、扩展性、复用性大大的提高。

1140

被折叠的 条评论
为什么被折叠?



