策略模式基本应用Strategy Pattern
2018-02-16 13:10
148 查看
策略模式,我的理解就是利用java多态的特性,隐藏其实现类,通过调用其接口,来调用相应的实现类,这个和RSF调用中指定相应的impl,有些相似。
标准的解释,替换某个算法的具体细节,而不需要完全重写代码。甚至可以在运行时进行替换,和依赖一同使用。
如果依赖注入的接口有多个实现类,比如service 有多个实现,那这样可以指定对应的实现,通过 @Resource或者 @Autowire指定实现类的方式如下@Resource(name="imgDataDao")
private DataDao xx;
或者:
@Autowired
@Qualifier("imgDataDao")
private DataDao yy;在实践中就可以指定不同的数据实现中间件,来进行不同的数据库操作。
简单说,策略模式就是java语言特性中的多态
定义一个打印日志的接口,再写两个实现类,一个打印在控制台,一个写入在本地文件
接口:public interface Log {
void printLog(String message);
}控制台实现:public class ConsoleLog implements Log {
@Override
public void printLog(String message) {
System.out.println(message);
}
}写入文件实现:public class WriteLog implements Log{
@Override
public void printLog(String message) {
try {
/*
* 路径说明,如果是 path是根路径则根据系统转换,如果是相对路径是就从项目工程目录family-admin-web往下
* . 当前目录,..当前目录往上
*/
FileOutputStream fos = new FileOutputStream("../file4.txt");
char[] array = message.toCharArray();
for (int i = 0; i < array.length; i++) {
try {
fos.write(array[i]);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}测试类: @Test
public void test() {
Log log = new ConsoleLog();
log.printLog("123");
}
@Test
public void test01() throws Exception {
Log log = new WriteLog();
log.printLog("123 message");
}策略模式是相对比较简单的模式,类似简单的还有模板模式,设计模式使用的问题在于多种设计模式的复合使用。从来不是单独而存在的,但20多种设计模式是整个软件工程的基础。
标准的解释,替换某个算法的具体细节,而不需要完全重写代码。甚至可以在运行时进行替换,和依赖一同使用。
如果依赖注入的接口有多个实现类,比如service 有多个实现,那这样可以指定对应的实现,通过 @Resource或者 @Autowire指定实现类的方式如下@Resource(name="imgDataDao")
private DataDao xx;
或者:
@Autowired
@Qualifier("imgDataDao")
private DataDao yy;在实践中就可以指定不同的数据实现中间件,来进行不同的数据库操作。
简单说,策略模式就是java语言特性中的多态
定义一个打印日志的接口,再写两个实现类,一个打印在控制台,一个写入在本地文件
接口:public interface Log {
void printLog(String message);
}控制台实现:public class ConsoleLog implements Log {
@Override
public void printLog(String message) {
System.out.println(message);
}
}写入文件实现:public class WriteLog implements Log{
@Override
public void printLog(String message) {
try {
/*
* 路径说明,如果是 path是根路径则根据系统转换,如果是相对路径是就从项目工程目录family-admin-web往下
* . 当前目录,..当前目录往上
*/
FileOutputStream fos = new FileOutputStream("../file4.txt");
char[] array = message.toCharArray();
for (int i = 0; i < array.length; i++) {
try {
fos.write(array[i]);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}测试类: @Test
public void test() {
Log log = new ConsoleLog();
log.printLog("123");
}
@Test
public void test01() throws Exception {
Log log = new WriteLog();
log.printLog("123 message");
}策略模式是相对比较简单的模式,类似简单的还有模板模式,设计模式使用的问题在于多种设计模式的复合使用。从来不是单独而存在的,但20多种设计模式是整个软件工程的基础。
相关文章推荐
- JAVA设计模式-策略模式应用实例
- JAVA设计模式-策略模式应用实例
- 设计模式的应用场景(16)--策略模式
- 策略模式的优缺点以及在Android中的应用
- [策略模式]在游戏开发中的应用
- protocol的基本使用与代理设计模式的应用
- iOS应用运用设计模式中的Strategy策略模式的开发实例
- 对象模型--策略、模式、应用 笔记1
- 策略模式的基本代码
- ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)
- 策略设计模式的应用
- Spring 资源访问剖析和策略模式应用
- 设计模式实战应用之一:策略模式
- Unity客户端框架笔记(状态模式和策略模式在游戏中的应用)
- JAVA设计模式-策略模式应用实例
- JAVA设计模式-策略模式应用实例
- #笔记#圣思园 JavaSE 第51讲——策略模式和在集合中的应用
- Ruby设计模式之策略模式一: 基本的策略模式
- OpenCV 2 学习笔记(10): 算法的基本设计模式<1>:策略模式(strategy pattern)
- 取消基本数据的修改——备忘录模式的应用