zoukankan      html  css  js  c++  java
  • 接口、抽象类应用之策略模式学习

    接口应用之策略模式

    策略模式(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 {
       }
  • 相关阅读:
    UML的相关基础知识
    easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
    easyui datagrid load的时候,提交的时候多了name为数字的参数
    Easyui Dialog 设置初始位置
    投票系统的代码总结
    部门组织机构树的使用
    TCP连接客户端的方法
    播放M3U8的js代码
    JAVA的split的用法
    BOLB转word文件,和word文件转换BOLB
  • 原文地址:https://www.cnblogs.com/zxfei/p/10846969.html
Copyright © 2011-2022 走看看