从头认识设计模式-策略模式-01-原始应用场景
2016-03-16 22:34
666 查看
这一章节我们先引入策略模式使用的原始应用场景,然后通过一步步的改进,来阐述为什么需要策略模式?怎么使用策略模式?
1.原始应用场景
下面我们构建了一个我们比较熟悉的应用,就是Service的实现都继承一个BaseService的实现
2.介绍
(1)我们建立一个通用的BaseService的实现,里面的功能只有增删改查。(这是我们平常比较常用的场景)
(2)下面的UserServiceImpl、DeptServiceImpl、CourseServiceImpl都只是继承Base的实现,自己里面没有独立的逻辑。
(3)Client指的是客户端,客户端对接口进行调用,然后对User、Dept和Course进行增删改查。
3.当我们完成上面的功能的时候,我们的客户要求我们增加导入导出功能?
现在需求变了,我们应该怎么应对?
总结:这一章节我们引入了原是应用环境,并对应用环境进行新的要求。
目录:
我的github:https://github.com/raylee2015/designpattern
1.原始应用场景
下面我们构建了一个我们比较熟悉的应用,就是Service的实现都继承一个BaseService的实现
package com.raylee.designpattern.strategy.ch01; /** * 这个类是我们需要使用设计模式改进的原始类,也就是策略模式应用的初始环境。 * * @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.ch01; /** * @TODO 用于课程的增删改查 * @author raylee * @date 2016年3月16日 * @version 1.0 */ public class CourseServiceImpl extends BaseServiceImpl { }
package com.raylee.designpattern.strategy.ch01; /** * @TODO 用于用户的增删改查 * @author raylee * @date 2016年3月16日 * @version 1.0 */ public class UserServiceImpl extends BaseServiceImpl { }
package com.raylee.designpattern.strategy.ch01; /** * @TODO 用于部门的增删改查 * @author raylee * @date 2016年3月16日 * @version 1.0 */ public class DeptServiceImpl extends BaseServiceImpl { }
package com.raylee.designpattern.strategy.ch01; public class Client { // 对用户、部门、课程进行增删改查 }
2.介绍
(1)我们建立一个通用的BaseService的实现,里面的功能只有增删改查。(这是我们平常比较常用的场景)
(2)下面的UserServiceImpl、DeptServiceImpl、CourseServiceImpl都只是继承Base的实现,自己里面没有独立的逻辑。
(3)Client指的是客户端,客户端对接口进行调用,然后对User、Dept和Course进行增删改查。
3.当我们完成上面的功能的时候,我们的客户要求我们增加导入导出功能?
现在需求变了,我们应该怎么应对?
总结:这一章节我们引入了原是应用环境,并对应用环境进行新的要求。
目录:
我的github:https://github.com/raylee2015/designpattern
相关文章推荐
- 人的惯性思维
- 漫漫“码农”路
- G
- 教务管理系统-数据库2
- 探索C# : List 元素类型和清除方法
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- linux语言修改
- 编译型语言和解释型语言
- DOM简介
- 基于自主开发Web服务器的校内成绩查询系统
- 关于绑定变量的一点心得(转)
- Tomcat的安装配置
- 复利计算2.0
- iOS中的事件传递和响应者链条
- awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
- single-number
- Spring中常用的hql查询方法(getHibernateTemplate())
- codeforces-148D-Bag of mice【概率】【DFS】
- 关于CSS3的代码总结(部分)
- 准备复习一波,准备面试