当前位置: 首页 > news >正文

java基础之策略模式[26]

java基础之策略模式[26]


文章目录

  • java基础之策略模式[26]
  • 一、策略模式是什么?
  • 二、代码演示
    • 1.策略模式接口
    • 2.接口子类实现
    • 3.抽象类,封装接口
    • 4.用户实例类,继承抽象类,实现接口的实例
    • 5.创建对象实现功能
  • 三.小结



一、策略模式是什么?

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

把可变的行为抽象出来,这样的好处是这些行为可以在真正使用时相互替换.

策略模式是非常常用的,一个接口有多个实现,不同的实现独立封装,可以按运行时需求相互替换,可维护性就强了,新增接口实现也不会影响其他实现类.

OO设计原则:
1.面向接口编程(面向抽象编程).
2.封装变化;
3.多用组合,少用继承;

二、代码演示

1.策略模式接口

 interface ISave{
 	void save(String data);
  }

2.接口子类实现

class FileSave implements ISave{

   @Override
      public void save(String data) {
          System.out.println("保存数据...."+data);
      }
}
class NetSave implements ISave{
     @Override
     public void save(String data){
         System.out.println("上传数据...."+data);
     }
}

3.抽象类,封装接口

 abstract class SavaMethod{
	private ISave iSave;//封装接口
	    public void setiSave(ISave iSave){//实例化接口
	        this.iSave=iSave;
	    }
	    public void method(String data){
	        iSave.save(data);//实例化后的接口调用方法
	    }
}

4.用户实例类,继承抽象类,实现接口的实例

class UserManage extends SavaMethod{}

5.创建对象实现功能

UserManage um=new UserManage();
um.setiSave(new NetSave());
um.method("user");

三.小结

本章概述了java中策略模式的使用,策略模式是面向接口编程的入门模式,在开发中,面向接口编程可以大大提高开发效率;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

相关文章:

  • 将自己的项目打包docker镜像并上传、使用
  • Vue 高级特性总结
  • 「滑动窗口算法概述」
  • MyEclipse数据库使用教程:使用数据库表、外键和索引
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • Windows Server 2016安装SQLServer2008R2
  • BP神经网络算法基本原理,bp神经网络的算法步骤
  • HADOOP 的 LZO 压缩 hadoop-lzo 编译
  • 单调栈: 接雨水
  • 用C++11 make_shared替代shared_ptr
  • 数据结构之——栈的操作讲解与功能实现
  • 剑指 Offer II 079+080+081+082
  • 前端小tips(持续更新)
  • matlab读取文件
  • php __destruct反序列化原理
  • css系列之关于字体的事
  • javascript面向对象之创建对象
  • JavaScript设计模式与开发实践系列之策略模式
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • magento 货币换算
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • react-native 安卓真机环境搭建
  • Vue UI框架库开发介绍
  • webgl (原生)基础入门指南【一】
  • 从PHP迁移至Golang - 基础篇
  • 批量截取pdf文件
  • 三分钟教你同步 Visual Studio Code 设置
  • 世界上最简单的无等待算法(getAndIncrement)
  • 首页查询功能的一次实现过程
  • 写代码的正确姿势
  • ionic异常记录
  • 阿里云API、SDK和CLI应用实践方案
  • ​​​​​​​​​​​​​​Γ函数
  • #pragam once 和 #ifndef 预编译头
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (14)Hive调优——合并小文件
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2015)JS ES6 必知的十个 特性
  • (C语言)字符分类函数
  • (js)循环条件满足时终止循环
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (solr系列:一)使用tomcat部署solr服务
  • (安卓)跳转应用市场APP详情页的方式
  • (二)hibernate配置管理
  • (二)WCF的Binding模型
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (六)Hibernate的二级缓存
  • (四) Graphivz 颜色选择
  • (一)RocketMQ初步认识
  • (转)德国人的记事本
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)虚函数剖析
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 怎么循环得到数组里的值_关于js数组