通常,一个成熟的软件产品需要经过漫长和无数的测试才可以发布投入正常使用,在软件的测试或者需求变化的过程中我们很可能会经常增加或者删去某些功能,软件的后期升级也是一个永恒的话题,无论是后期软件的升级还是测试过程当中功能的修改,都会使得我们对整个系统再次进行全面的测试,对原有的代码进行大规模的修改,这样做,不仅会耗费巨大的人力和物力,还会给原有的系统引入了新的错误,如何构建一个可扩展的系统,这就要求我们在前期系统设计的时候遵循开闭原则。
要实现开闭原则,我们可以对系统作如下的考虑:
1)在设计的时候,对于拥有相似功能或者共同功能的类进行抽象化处理,将公用的功能都放在抽象类中,所有的操作都调用子类。
例如:有这样一个问题:我们有一个用户登录功能
package design;
public abstract class Login {
private String useranem;
private String psaaword;
public abstract void cheack();
public String getUseranem() {
return useranem;
}
public void setUseranem(String useranem) {
this.useranem = useranem;
}
public String getPsaaword() {
return psaaword;
}
public void setPsaaword(String psaaword) {
this.psaaword = psaaword;
}
}
</pre><pre name="code" class="java"><pre name="code" class="java"><span style="white-space:pre"> </span>有一个登录验证的方法,我们可以考虑把它设计为抽象类(当然实际不会这样做的,在这里只是随便举个例),这样做以后,在后期需求修改,我们只需要换子类来继承这个抽象类即可:
<pre name="code" class="java">package design;
public class MySqlLogin extends Login{
@Override
public void cheack() {
System.out.println("采用mysql数据库验证登陆");
}
}
<pre name="code" class="java">package design;
public class OracleLogin extends Login{
@Override
public void cheack() {
System.out.println("Oracle数据库验证登陆");
}
}
通过例子,我们可以发现,我们在后期可以随便更换抽象类的实现,这样就可以给我们后期功能的变更提供了极大的便利,也避免了给原有的代码引入大量打错误的问题。
2)多使用接口。
使用接口,这样,我们就可以在后期很方便的对接口的实现进行修改,以适应系统需求变化,而可以避免给原有代码引入大量的错误。
本文探讨了软件设计中的开闭原则,通过实例说明如何利用抽象类和接口提高系统的可扩展性和灵活性,以应对需求变更。
873

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



