最近项目的二次开发已经基本结束,所谓的开发任务,是指将新的需求开发结束。而现阶段,随着测试的展开,我开始留意一些项目中的优化问题。在项目的代码中,存在一些地方,由于我们赶进度而“应付”的逻辑代码。
在面向对象的世界里,我们与分层和面向接口就结下了不解之缘。在企业级的应用中,随着项目越来越大,代码的冗余增长速度是不可估量的。而我们通过分层,有效的提高了代码的重用性。Spring对于我这样搞Java的人,并不陌生,它推崇的一种面向接口的思想(思想不赘述)。有时候,我们建了很多接口,还写了它的实现,对于我们这些初级的人员来说,貌似感觉这个给我们带来了很大的压力。
当然,面向接口的好处,并不能体现在快速开发,一次开发,它的优势是在维护上。
对于一段逻辑,散列在系统的很多地方,对于一个工具,可能有很多地方都在使用。它给外面暴露了一些接口,为别人提供了方便。有一天,你发现了一个bug,在你的场景中,很难解决这个问题,但是它已经完成了一个很复杂的逻辑了。这个时候,你恨不得自己重写把代码再写一遍,也不愿意再去维护这段代码了(读别人的代码,一般让人觉得比自己写代码枯燥很多,尤其是写的比较乱的^_^)。
其实,这个时候,你就发现了接口是多么的重要了。你完全可以把之前的那个工具类,提出一个接口,将原来的声明的地方调整为接口,这样,把代码中需要的接口,写到你新建的接口中,这样完成了一个接口的抽取。这个时候,你觉得自己有更好的策略来完成意见事情,你已经为此消耗了很多时间,把这件事搞定了,却无奈,你暴露的接口跟实际需要的不太一样。怎么办?朋友们,也许想到了,设计模式中有一个叫适配器(Adapter)的模式。这就想InputStream、Reader、InputStreamReader一样的意思。字节流、字符流、以及他们之间的转换。
这样的调整,你可以在你自己的逻辑中使用新的实现了,在以后的代码中可以用新的代码了,而且不担心调整会影响现有的代码信息。何乐而不为呢。