我们接着上面的需求变化的问题,给出第一个解决方案:在BaseServiceImpl里面增加一个统一的导出导入方法。
1.代码清单
基类:我们在尝试在基类里面增加一个导入导出方法,然后根据继承的特性,其他几个实现也就可以有了导入导出方法
package com.raylee.designpattern.strategy.ch02;
/**
* 这个类是我们需要使用设计模式改进的原始类,也就是策略模式应用的初始环境。<br>
* 增加了导入导出方法<br>
*
* @author raylee
* @data 2016-03-16
* @version 1.1
*/
public class BaseServiceImpl {
public void add() {
System.out.println("add a new object");
}
public void update() {
System.out.println("update object");
}
public void query() {
System.out.println("query and return a object");
}
public void delete() {
System.out.println("delete the object");
}
public void importObjects() {
System.out.println("import the objects");
}
public void exportObjects() {
System.out.println("export the objects");
}
}
下面的几个继承实现类不变
package com.raylee.designpattern.strategy.ch02;
/**
* @TODO 用于课程的增删改查
* @author raylee
* @date 2016年3月16日
* @version 1.0
*/
public class CourseServiceImpl extends BaseServiceImpl {
}
package com.raylee.designpattern.strategy.ch02;
/**
* @TODO 用于用户的增删改查
* @author raylee
* @date 2016年3月16日
* @version 1.0
*/
public class UserServiceImpl extends BaseServiceImpl {
}
package com.raylee.designpattern.strategy.ch02;
/**
* @TODO 用于部门的增删改查
* @author raylee
* @date 2016年3月16日
* @version 1.0
*/
public class DeptServiceImpl extends BaseServiceImpl {
}
package com.raylee.designpattern.strategy.ch02;
public class Client {
// 对用户、部门、课程进行增删改查
public static void main(String[] args) {
CourseServiceImpl courseServiceImpl = new CourseServiceImpl();
courseServiceImpl.importObjects();
courseServiceImpl.exportObjects();
UserServiceImpl userServiceImpl = new UserServiceImpl();
userServiceImpl.importObjects();
userServiceImpl.exportObjects();
DeptServiceImpl deptServiceImpl = new DeptServiceImpl();
deptServiceImpl.importObjects();
deptServiceImpl.exportObjects();
}
}
输出:
import the objects
export the objects
import the objects
export the objects
import the objects
export the objects
2.问题
从上面的输出可以看见,无论需要导入导出那一个部分,他的导入导出结果都是一样。
但是,实际的情况,不同的部分导入导出结果是不一样的。
3.结论
上面的方向走不通,需要寻找另外的方向。
总结:这一章节主要阐述了在继承里面增加导入导出方法是走不通的,需要寻求另外的方法。
目录:http://blog.csdn.net/raylee2007/article/details/50951190
我的github:https://github.com/raylee2015/designpattern