如何将面向接口编程完美融入开放封闭原则,实现长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1782个文字,预计阅读时间需要8分钟。
开放封闭原则在面向接口编程中的应用:
开放封闭原则强调软件实体(如模块、类、函数等)应当对扩展开放,对修改封闭。在ITOOjava项目中,对面向接口编程的理解更为深刻。
开放封闭原则意味着:
1. 对扩展开放:软件模块应该能够适应变化,通过添加新功能或修改现有功能来扩展,而不需要修改现有的代码。
2. 对修改封闭:软件模块不应该因为功能的微小变化而频繁修改,保持其内部实现稳定。
在ITOOjava项目中,面向接口编程的具体应用如下:
1. 通过定义接口,将实现细节与使用分离。接口定义了行为的规范,而具体实现则由实现类提供。
2. 使用接口实现多态,提高代码的灵活性和可扩展性。通过接口,可以实现不同的对象之间的互换,而无需知道对象的内部实现。
3. 接口允许实现解耦,降低模块之间的依赖。模块之间通过接口进行通信,减少了直接的耦合关系。
4. 接口易于测试和维护。通过接口,可以单独测试实现类,提高测试效率;同时,修改接口实现时,不会影响到使用该接口的其他模块。
总之,在ITOOjava项目中,遵循开放封闭原则,通过面向接口编程,提高了代码的可扩展性、灵活性和可维护性。
开放封闭原则之“面向接口编程” 前言: 同样是开放封闭原则,在ITOOjava的项目中,对“面向接口编程”又有了更深刻的理解,下面请听自由互联小编徐徐道来: 开放封闭原则定义:开放封闭原则之“面向接口编程”
前言:同样是开放封闭原则,在ITOOjava的项目中,对“面向接口编程”又有了更深刻的理解,下面请听自由互联小编徐徐道来:
开放封闭原则定义:用面向接口编程这就为我们以后程序的扩展性提供基础。“对修改封闭,对扩展开发”。
利用接口的一个基本用途,规定子类的行为。更为广阔的用途是接口为其他人使用者提供什么用途。模块和模块之
间的解耦就看你的接口设计的是不是合理,是不是好用。这才是从框架设计师角度去思考问题了。
接口就是标准,是用来隔离具体实现的(或者说是和具体实现解耦)。举个生活中的例子就是:各种手机、移动硬
盘等连接上上的USB接口就是标准,大家各自制造自己的具体产品。产品使用者和提供者都遵守这个标准,那么使用
者就不必担心自己电脑上的USB接口是否只能插移动硬盘而不能插手机。
为什么要用接口 ?主要是是用于处理多变的情况。
(1)接口在实际开发过程中最大好处是,你可以按照设计,先把接口写好,然后分配大伙干活的时候,告诉a们去用写好的接口去实现他们的具体功能,而告诉b们,去写那些已经写好但是没有具体的代码的接口,这样可以提高工作效率。并且底层和应用也通过接口做了一个很明显的分层。
(2)接口可以降低耦合性,换句话说,可以让某个模块或功能能够重复利用,这样只要写这功能一次代码就ok了。其他地方要用到的,全部用接口调用来实现
(3)合理使用接口、继承,拥有良好架构的程序,二次开发上可能会节省很多时间,因为它低耦合 扩展性高。
ITOOJava5.0 代码走查之面向接口编程:原来的Service界面:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库 */ @Override public boolean countScoreByPaperId(String couserId, String examId, String paperId, String dataBaseName) { // 第一步将所有的记录查出来!! boolean flag = false; Map map = new HashMap(); map.put("couserId", couserId); map.put("paperId", paperId); String hqlstrString = "select t.studentID,t.studentName, SUM(t.score) as markScore From PaperRecord t where t.courseID=:couserId and t.paperId=:paperId GROUP BY t.studentID"; List list = new ArrayList(); try { // 查询到学生,和成绩信息。 list = calculateScoreEao .queryByHql(hqlstrString, map, dataBaseName); List liststudent = new ArrayList(); for (int i = 0; i
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库表名 */ public List queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName);
在CalculateScoreEaoImpl.java 中实现这个接口:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库表名 */ public List queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName){ Map map = new HashMap(); map.put("couserId", couserId); map.put("paperId", paperId); String hqlstrString = "select t.studentID,t.studentName, SUM(t.score) as markScore From PaperRecord t where t.courseID=:couserId and t.paperId=:paperId GROUP BY t.studentID"; return this.CalculateScoreEao.queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName);}
之后:CalculateScoreServiceImpl.java中代码如下:
优化后:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId * @param examId * @param paperId * @param dataBaseName */ @Override public boolean countScoreByPaperId(String couserId, String examId, String paperId, String dataBaseName) { // 第一步将所有的记录查出来!! boolean flag = false; List list = new ArrayList(); try { // 查询到学生,和成绩信息。 list = calculateScoreEao .queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName); List liststudent = new ArrayList(); for (int i = 0; i 特别是在ITOO这种大型的平台,利用面向接口的编程思想就更能体现出扩展性和维 护性了,ITOOJava平台现在还没有上线,即使是上线之后,也是需要不断的扩展和维护 了,将集成改成接口之后,就真正的做到了开放封闭的原则,方便以后的扩展和维护, 实际操作中也方便分模块的分工协作,就一个大项目肯定是需要很多人一同去协作来做 的,这正明显的提高了运行效率、开发和维护的效率。
本文共计1782个文字,预计阅读时间需要8分钟。
开放封闭原则在面向接口编程中的应用:
开放封闭原则强调软件实体(如模块、类、函数等)应当对扩展开放,对修改封闭。在ITOOjava项目中,对面向接口编程的理解更为深刻。
开放封闭原则意味着:
1. 对扩展开放:软件模块应该能够适应变化,通过添加新功能或修改现有功能来扩展,而不需要修改现有的代码。
2. 对修改封闭:软件模块不应该因为功能的微小变化而频繁修改,保持其内部实现稳定。
在ITOOjava项目中,面向接口编程的具体应用如下:
1. 通过定义接口,将实现细节与使用分离。接口定义了行为的规范,而具体实现则由实现类提供。
2. 使用接口实现多态,提高代码的灵活性和可扩展性。通过接口,可以实现不同的对象之间的互换,而无需知道对象的内部实现。
3. 接口允许实现解耦,降低模块之间的依赖。模块之间通过接口进行通信,减少了直接的耦合关系。
4. 接口易于测试和维护。通过接口,可以单独测试实现类,提高测试效率;同时,修改接口实现时,不会影响到使用该接口的其他模块。
总之,在ITOOjava项目中,遵循开放封闭原则,通过面向接口编程,提高了代码的可扩展性、灵活性和可维护性。
开放封闭原则之“面向接口编程” 前言: 同样是开放封闭原则,在ITOOjava的项目中,对“面向接口编程”又有了更深刻的理解,下面请听自由互联小编徐徐道来: 开放封闭原则定义:开放封闭原则之“面向接口编程”
前言:同样是开放封闭原则,在ITOOjava的项目中,对“面向接口编程”又有了更深刻的理解,下面请听自由互联小编徐徐道来:
开放封闭原则定义:用面向接口编程这就为我们以后程序的扩展性提供基础。“对修改封闭,对扩展开发”。
利用接口的一个基本用途,规定子类的行为。更为广阔的用途是接口为其他人使用者提供什么用途。模块和模块之
间的解耦就看你的接口设计的是不是合理,是不是好用。这才是从框架设计师角度去思考问题了。
接口就是标准,是用来隔离具体实现的(或者说是和具体实现解耦)。举个生活中的例子就是:各种手机、移动硬
盘等连接上上的USB接口就是标准,大家各自制造自己的具体产品。产品使用者和提供者都遵守这个标准,那么使用
者就不必担心自己电脑上的USB接口是否只能插移动硬盘而不能插手机。
为什么要用接口 ?主要是是用于处理多变的情况。
(1)接口在实际开发过程中最大好处是,你可以按照设计,先把接口写好,然后分配大伙干活的时候,告诉a们去用写好的接口去实现他们的具体功能,而告诉b们,去写那些已经写好但是没有具体的代码的接口,这样可以提高工作效率。并且底层和应用也通过接口做了一个很明显的分层。
(2)接口可以降低耦合性,换句话说,可以让某个模块或功能能够重复利用,这样只要写这功能一次代码就ok了。其他地方要用到的,全部用接口调用来实现
(3)合理使用接口、继承,拥有良好架构的程序,二次开发上可能会节省很多时间,因为它低耦合 扩展性高。
ITOOJava5.0 代码走查之面向接口编程:原来的Service界面:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库 */ @Override public boolean countScoreByPaperId(String couserId, String examId, String paperId, String dataBaseName) { // 第一步将所有的记录查出来!! boolean flag = false; Map map = new HashMap(); map.put("couserId", couserId); map.put("paperId", paperId); String hqlstrString = "select t.studentID,t.studentName, SUM(t.score) as markScore From PaperRecord t where t.courseID=:couserId and t.paperId=:paperId GROUP BY t.studentID"; List list = new ArrayList(); try { // 查询到学生,和成绩信息。 list = calculateScoreEao .queryByHql(hqlstrString, map, dataBaseName); List liststudent = new ArrayList(); for (int i = 0; i
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库表名 */ public List queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName);
在CalculateScoreEaoImpl.java 中实现这个接口:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId 课程Id * @param examId 考试Id * @param paperId 试卷Id * @param dataBaseName 数据库表名 */ public List queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName){ Map map = new HashMap(); map.put("couserId", couserId); map.put("paperId", paperId); String hqlstrString = "select t.studentID,t.studentName, SUM(t.score) as markScore From PaperRecord t where t.courseID=:couserId and t.paperId=:paperId GROUP BY t.studentID"; return this.CalculateScoreEao.queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName);}
之后:CalculateScoreServiceImpl.java中代码如下:
优化后:
/** * 修改人:通过课程Id、考试Id、试卷Id和数据库表名来计算分数+Daniel+2016-6-14 * @param couserId * @param examId * @param paperId * @param dataBaseName */ @Override public boolean countScoreByPaperId(String couserId, String examId, String paperId, String dataBaseName) { // 第一步将所有的记录查出来!! boolean flag = false; List list = new ArrayList(); try { // 查询到学生,和成绩信息。 list = calculateScoreEao .queryStuAndMarkScoreByKeyword(String couserId, String paperId, String dataBaseName); List liststudent = new ArrayList(); for (int i = 0; i 特别是在ITOO这种大型的平台,利用面向接口的编程思想就更能体现出扩展性和维 护性了,ITOOJava平台现在还没有上线,即使是上线之后,也是需要不断的扩展和维护 了,将集成改成接口之后,就真正的做到了开放封闭的原则,方便以后的扩展和维护, 实际操作中也方便分模块的分工协作,就一个大项目肯定是需要很多人一同去协作来做 的,这正明显的提高了运行效率、开发和维护的效率。

