设计模式六大原则之开闭原则

本文探讨了软件设计中的开闭原则,通过实例说明如何利用抽象类和接口提高系统的可扩展性和灵活性,以应对需求变更。


       通常,一个成熟的软件产品需要经过漫长和无数的测试才可以发布投入正常使用,在软件的测试或者需求变化的过程中我们很可能会经常增加或者删去某些功能,软件的后期升级也是一个永恒的话题,无论是后期软件的升级还是测试过程当中功能的修改,都会使得我们对整个系统再次进行全面的测试,对原有的代码进行大规模的修改,这样做,不仅会耗费巨大的人力和物力,还会给原有的系统引入了新的错误,如何构建一个可扩展的系统,这就要求我们在前期系统设计的时候遵循开闭原则。

       要实现开闭原则,我们可以对系统作如下的考虑:

      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)多使用接口。
     使用接口,这样,我们就可以在后期很方便的对接口的实现进行修改,以适应系统需求变化,而可以避免给原有代码引入大量的错误。
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值