标签:string ext void strategy 面向接口 实现 set system pre
策略模式(Strategy Pattern),定义了一系列算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于它的客户应用而独立变化。
多用组合,少用继承
// 测试类(包含main方法)
public class StrategyPattern {
public static void main(String[] args) {
BaseService userService = new UserService();
// 选用保存到文件的策略
userService.setISave(new Save2File());
// 选择保存到数据库的策略
userService.setISave(new Save2DataBase());
userService.save("user");
}
}
// 把可变的行为抽象出来,定义一系列的算法,这样的好处是这些行为可以在真正使用时相互替换。
interface ISave {
abstract void save(String data);
}
// 策略类一:将数据保存到数据库
class Save2DataBase implements ISave {
@Override
public void save(String data) {
System.out.println("保存数据到数据库。。" + data);
}
}
//策略类二:将数据保存到文件
class Save2File implements ISave {
@Override
public void save(String data) {
System.out.println("保存数据到文件。。" + data);
}
}
abstract class BaseService {
// 组合,将接口作为类的一个属性
private ISave iSave;
// 提供公共的注入策略的方法
public void setISave(ISave iSave) {
this.iSave = iSave;
}
// 保存数据的方法
public void save(String data) {
System.out.println("检查数据合法性。。");
iSave.save(data);
System.out.println("保存数据完毕");
}
}
// 还可以定义其他类实现BaseService
class UserService extends BaseService {
}
标签:string ext void strategy 面向接口 实现 set system pre
原文地址:https://www.cnblogs.com/zxfei/p/10846969.html