接口、抽象类应用之策略模式学习

接口应用之策略模式

策略模式(Strategy Pattern),定义了一系列算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于它的客户应用而独立变化。

OO设计原则

  1. 面向接口编程(面向抽象编程)

  2. 封装变化

  3. 多用组合,少用继承

    // 测试类(包含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 {
    }

posted on 2019-05-10 21:59  行之间  阅读(715)  评论(0)    收藏  举报