一个关于开闭原则和依赖倒置原则的代码重构案例

开闭原则:开闭原则就是说对扩展开放,对修改关闭。

依赖倒置原则:这个是开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体。

以下摘取了之前自己写过的一个动态代码机工具,业务逻辑相关的代码都已过滤掉,重构前代码是这样的:


使用者调用起来也很简单,

public static void main(String [] args){

    CodeGeneratorUtil cgu =new CodeGeneratorUtil();

    cgu.generatorByDBTemplate();

}

此时如果扩展一项功能,比如可以根据用户录入的模板生成代码,那就需要修改CodeGeneratorUtil类了,如果在项目中这样写也是可以的,但是如果要做成框架,提供给其他用户调用,那就不合适了。

以下对代码进行了重构:

1.  首先定义一个ICodeTemplate接口,每扩展一类模板,就新增一个该接口的实现类。


2. 以下为数据库模板和FreeMark模板的实现类,如果要扩展用户录入的自定义模板,可以新增一个ICodeTemplate实现类,并实现接口中的方法。


3. 新增CodeGenerator类,组合ICodeTemplate接口,并通过调用其方法,实现代码的动态生成。


应用层这样调用

public static void main(String [] args){

    CodeGenerator cg =new CodeGenerator();

    cg.setiCodeTemplate(new FreeMarkCodeTemplate());

    cg.generatorCode();

}

重构后遵循java设计的开闭原则和依赖倒置原则。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容