定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。
Strategy模式以下列几条原则为基础:
1) 每个对象都是一个具有职责的个体。
2) 这些职责不同的具体实现是通过多态的使用来完成的。
3) 概念上相同的算法具有多个不同的实现,需要进行管理。
例子:
public interface DatabaseStrategy {
public void process();
}
public class MysqlDBStrategy implements DatabaseStrategy {
public void process() {
System.out.println("处理Mysql数据库连接");
}
}
public class OracleDBStrategy implements DatabaseStrategy {
public void process() {
System.out.println("处理Oracle数据库连接");
}
}
public class DataBaseManager {
public void process(DatabaseStrategy dbStrategy) {
dbStrategy.process();
}
}
public class StrategyClient {
public static void main(String[] args) {
DataBaseManager manager = new DataBaseManager();
MysqlDBStrategy mysql = new MysqlDBStrategy();
manager.process(mysql);
OracleDBStrategy oracle = new OracleDBStrategy();
manager.process(oracle);
}
}
Strategy模式以下列几条原则为基础:
1) 每个对象都是一个具有职责的个体。
2) 这些职责不同的具体实现是通过多态的使用来完成的。
3) 概念上相同的算法具有多个不同的实现,需要进行管理。
例子:
public interface DatabaseStrategy {
public void process();
}
public class MysqlDBStrategy implements DatabaseStrategy {
public void process() {
System.out.println("处理Mysql数据库连接");
}
}
public class OracleDBStrategy implements DatabaseStrategy {
public void process() {
System.out.println("处理Oracle数据库连接");
}
}
public class DataBaseManager {
public void process(DatabaseStrategy dbStrategy) {
dbStrategy.process();
}
}
public class StrategyClient {
public static void main(String[] args) {
DataBaseManager manager = new DataBaseManager();
MysqlDBStrategy mysql = new MysqlDBStrategy();
manager.process(mysql);
OracleDBStrategy oracle = new OracleDBStrategy();
manager.process(oracle);
}
}
本文介绍了一种设计模式——策略模式,该模式将一系列算法封装并使其可互相替换,从而实现算法与客户端的解耦。通过一个具体的数据库连接示例,展示了如何使用策略模式管理不同类型的数据库连接。
1857

被折叠的 条评论
为什么被折叠?



