码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-05-10 23:23:02      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:string   ext   void   strategy   面向接口   实现   set   system   pre   

接口应用之策略模式

策略模式(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 {
     }

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

标签:string   ext   void   strategy   面向接口   实现   set   system   pre   

原文地址:https://www.cnblogs.com/zxfei/p/10846969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!