从头认识设计模式-策略模式-03-思考过程二:在每一个类里面单独增加方法或者增加接口
来源:互联网 发布:什么软件可以汉化 编辑:程序博客网 时间:2024/06/05 19:34
我们接着上面的需求变化的问题,给出第一个解决方案:在每一个类里面单独增加方法或者增加接口。
其实这个方法的本质都是一样,就是在不同的类上面实现不同的逻辑。
我们下面的代码清单以增加接口为例
1.代码清单
还原BaseServiceImpl 。
package com.raylee.designpattern.strategy.ch03;/** * 这个类是我们需要使用设计模式改进的原始类,也就是策略模式应用的初始环境。<br> * * @author raylee * @data 2016-03-16 * @version 1.0 */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");}}
增加了导入导出接口。
package com.raylee.designpattern.strategy.ch03;public interface ImportService {public void importObjects();}
package com.raylee.designpattern.strategy.ch03;public interface ExportService {public void exportObjects();}
实现类实现了上面的两个接口:
package com.raylee.designpattern.strategy.ch03;/** * @TODO 1 用于用户的增删改查 * @TODO 1.1 增加导入导出功能 * * @author raylee * @date 2016年3月16日 * @version 1.1 */public class UserServiceImpl extends BaseServiceImpl implements ExportService, ImportService {public void importObjects() {System.out.println("import users");}public void exportObjects() {System.out.println("export users");}}
package com.raylee.designpattern.strategy.ch03;/** * @TODO 1 用于部门的增删改查 * @TODO 1.1 增加导入导出功能 * * @author raylee * @date 2016年3月16日 * @version 1.1 */public class DeptServiceImpl extends BaseServiceImpl implements ExportService, ImportService {public void importObjects() {System.out.println("import depts");}public void exportObjects() {System.out.println("export depts");}}
package com.raylee.designpattern.strategy.ch03;/** * @TODO 1.用于课程的增删改查 * @TODO 1.1 增加导入导出功能 * * @author raylee * @date 2016年3月16日 * @version 1.1 */public class CourseServiceImpl extends BaseServiceImpl implements ExportService, ImportService {public void importObjects() {System.out.println("import courses");}public void exportObjects() {System.out.println("export courses");}}
我们在Client那里再次测试导入导出方法:
package com.raylee.designpattern.strategy.ch03;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 courses
export courses
import users
export users
import depts
export depts
现在输出到符合实际需求,但是有出现新的问题。
2.问题
代码没有办法复用,而且以后每增加一个类,我们都需要单独的为那个类实现导入导出功能。
3.结论
该方法能够解决一部分的问题,但是他本身又引伸出其他的问题
总结:这一章节我们通过测试来阐述在需求增加的时候,在每一个类里面单独增加方法或者增加接口这种方法是不可靠的,当然,现实当中我们更多的时候还是这样做,因为工期短,返工大,没有办法,但是也希望大家能够尽量改进一下,也是为了第n个接手项目的人能够比较顺利的上手。
目录:http://blog.csdn.net/raylee2007/article/details/50951190
我的github:https://github.com/raylee2015/designpattern
0 0
- 从头认识设计模式-策略模式-03-思考过程二:在每一个类里面单独增加方法或者增加接口
- 从头认识设计模式-策略模式-02-思考过程一:在继承里面增加导入导出方法
- 从头认识设计模式-策略模式-05-思考过程四:引入设计原则:面向接口编程
- 从头认识设计模式-策略模式-04-思考过程三:引入设计原则:分离变化与不变的部分
- 从头认识设计模式-策略模式-06-对前面几个章节思考的总结
- 从头认识设计模式-策略模式-01-原始应用场景
- 从头认识设计模式-目录
- 设计模式迷你手册 更新了!!!每一个模式都增加了C++和C#例子代码!
- 从头认识设计模式-策略模式-07-对策略模式的总结
- 在DVR中增加系统模式CGI接口
- java 设计模式 策略模式,comparable 接口,compareTo 方法
- 设计模式(二)---策略模式
- 设计模式二 策略模式
- 设计模式二:策略模式
- 设计模式(二)策略模式
- 从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?
- 设计模式在游戏中的应用--策略模式(二)
- 设计模式三(采用pyside为设计模式一、二增加GUI外衣 )
- Unity3D 基础篇-Camera
- 使用Selector API实现购物车客户端计算
- 多线程 : 阻塞队列
- [杂七杂八-iOS]个人总结-3.16
- Linux常用命令
- 从头认识设计模式-策略模式-03-思考过程二:在每一个类里面单独增加方法或者增加接口
- 札记——设计模式之多个工厂方法模式
- Loongson Kernel编译与使用
- Android的UDP请求与响应
- ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同
- codeforce 148->A. Insomnia cure
- 在Linux(centos)中搭建LAMP的小过程
- Hibernate
- 如何把一个包含features和plugins的folder 变成一个Maven Tycho支持的 P2仓库?